无法通过执行带有上下文的Handlebars模板来获取HTML结果

时间:2012-12-17 15:35:20

标签: javascript templates handlebars.js

我的javascript中有以下代码:

    var context = {
        "title": section_title
    };

    var section_template = $("section-template").html(),
        template = Handlebars.compile(section_template);

    alert("yeah!");
    alert(context.title);
    var final_section_content = template(context);

    alert("WHat?");

alerts()纯粹用于调试目的。

section_template已正确填充我准备的模板

template有一个函数作为其值,所以我假设编译也很顺利。

“是啊!”并正确显示上下文的标题。但是,template(context);执行中似乎出现了问题。 “什么?”永远不会引发警报,因此永远不会设置HTML内容(稍后在程序中)。在程序的后面,我使用final_section_content作为jQuery before()函数的值。但是“什么?”本身没有被执行。知道为什么吗?

模板代码:

<script id="section-template" type="text/x-handlebars-template">
    <div class="row-fluid">
        <div class="span8 offset1">
            {{! This will contain the section requirements}}
            <div class="section-title">
                <span class="add-on">
                    <i class="icon-plus-sign"></i>
                </span>

                <h2>
                    {{title}}
                </h2>
                <i class="icon-list" data-placement="bottom" data-title="Create sub-section"></i>
                <i class="icon-pencil" data-placement="bottom" data-title="Edit section title"></i>
                <i class="icon-trash" data-placement="bottom" data-title="Delete section"></i>
                <div class="subsection">
                    {{! Dummy container for subsection}}
                </div>
            </div>
        </div>
        <div class="span2 offset1">
            {{! This will contain the total score for the section}}
        </div>
    </div>
</script>

1 个答案:

答案 0 :(得分:1)

确保在使用$('#section-template').html()查询内容之前加载包含模板代码的元素。有关详细信息,请参阅Why is browser returning error "TypeError: this._input is null" in Firefox (and similar in Chrome) when using handlebars.js?