【问题标题】:icanhaz not finding templateicanhaz 没有找到模板
【发布时间】:2012-07-23 11:24:17
【问题描述】:

为了使这个示例尽可能简单,假设我在 home.html 中有以下代码:

<html>
    <head>
        <!-- ALL DEPENDENCIES FOR ICANHAZ ARE INCLUDED ABOVE -->

        <script type="text/html" id="foo" src="js_template.js"></script>
        <script>ich.foo({})</script>
    </head>
    <body></body>
</html>

在 javascript_template.js 中,我有以下内容:

Hello world!

事实证明,icanhaz 没有检测到 foo,所以 ich.foo({}) 会抛出错误。这里到底发生了什么?

【问题讨论】:

    标签: javascript mustache icanhaz.js


    【解决方案1】:

    ICanHaz.js 不会自动下载src 的内容。这种行为可以在 ICH.js 源代码的第 510 行看到,其中它在定义模板之前检查 script 标签的 innerHTML 属性。

    您必须内联定义它,或者使用您自己的 AJAX 请求。例如嵌入:

    <script type="text/html" id="foo">
         Hello, world
    </script>
    

    或者,如果你使用 jQuery,你可以使用 AJAX 来加载脚本:

    $(function(){
        $.get('js_template.js', function(res){
             ich.addTemplate('foo', res);
        });
    });
    

    请记住,在 AJAX 请求完成之前,ich.foo() 将不可用。

    【讨论】:

    • 感谢安德鲁的快速回复。我只是认为浏览器会同步下载脚本,并且当我使用传递给 $(document).ready 的任何内容时,src 的内容将在 DOM 中可用。这不是 text/javascript 脚本标签通常会发生的情况吗?
    • 它用于 Javascript,但脚本的内容从未真正注入元素本身(即innerHTML),这是 ICH 检查的内容。
    猜你喜欢
    • 2012-10-25
    • 2012-01-02
    • 1970-01-01
    • 2013-01-01
    • 2015-03-12
    • 2020-08-29
    • 2012-05-31
    • 2013-05-03
    • 2018-12-21
    相关资源
    最近更新 更多