0

我有一个按预期呈现的预编译车把模板。

我决定向我正在预编译的模板添加一个嵌入的(非预编译的)部分引用,但部分的内容没有正确呈现。

最终结果是嵌入部分的内容包含在呈现的 HTML 中(我想我的部分是“部分”工作 :-D ),但是:

  1. 部分的名称也包含在每一行中
  2. 部分中的表达式未填充我的数据

这是呈现的 HTML。下面列出了部分命名的 3 行templateBodyItemNumberPartial(部分名称似乎是每行输出的前缀),并且没有数据呈现在<span>

<div class="templateBodyItem">
    templateBodyItemNumberPartial
templateBodyItemNumberPartial            <span class="templateBodyItemNumber"></span>
templateBodyItemNumberPartial         
    this is my body text
    <div class="templateBodyItemFooter">this is my footer text</div>
</div>

templateBodyItemNumberPartial这是引用部分的主要预编译模板:

{{! templates/nameWithPartial.handlebars }}
{{! precompiled via: handlebars ./templates/nameWithPartial.handlebars -f external_template_with_partial.js }}
<div class="templateBodyItem">
    {{> templateBodyItemNumberPartial }} 
    {{ templateBodyItem }}
    <div class="templateBodyItemFooter">{{ templateBodyFooter }}</div>
</div>

这是我定义/注册部分并调用我的预编译nameWithPartial模板的 .html 文件:

<script type="text/javascript" src="./handlebars-v2.0.0-alpha.4.js"></script>
<script type="text/javascript" src="./external_template_with_partial.js"></script>

<script id="templateBodyItemNumberPartial" type="text/x-handlebars-template">
    <span class="templateBodyItemNumber">{{ templateBodyItemNumber }}</span>
</script>

var templateBodyObject = {
    templateBodyItemNumber : 4 ,
    templateBodyItem : 'this is my body text' ,
    templateBodyFooter : 'this is my footer text'                                    
};

// verify that the partial html is what I think it should be
console.log( $( '#templateBodyItemNumberPartial' ).html() );
//=> <span class="templateBodyItemNumber">{{ templateBodyItemNumber }}</span>

Handlebars.registerPartial( 'templateBodyItemNumberPartial' , $( '#templateBodyItemNumberPartial' ).html() );
var templateHtml = Handlebars.templates.nameWithPartial( templateBodyObject );

我正在尝试使用嵌入式局部来测试局部在车把中的工作方式。

任何人都可以确认是否支持此功能,或者如果我的引用部分的主模板是预编译的,我是否必须使用预编译的部分?

非常感谢!

顺便说一句,我正在运行 Win7 Pro 64 位,但希望这不是问题......

4

1 回答 1

0

这个问题似乎可以通过将车把回滚到@1.3.0 来解决。

我将上面的一行代码从:

<script type="text/javascript" src="./handlebars-v2.0.0-alpha.4.js"></script>

至:

<script type="text/javascript" src="./handlebars-v1.3.0.js"></script>

然后我将把手 CLI 回滚到 @1.3.0:

$ npm install -g handlebars@1.3.0

并重新编译外部模板:

$ handlebars ./templates/name_with_partial.handlebars -f external_template_with_partial.js

我猜要么partials 和@v2.0.0-alpha.4 存在问题,要么这个最新版本中的partials 功能发生了变化。我应该得到我在名称中使用带有“alpha”的东西所得到的东西。:)

哦,好的,谢谢收听。

于 2014-08-25T23:15:56.083 回答