调用单独的对象作为Handlebars Partial的上下文

时间:2015-09-24 23:04:08

标签: backbone.js handlebars.js

所以我有一个HBS模板,我使用骨干模型进行渲染。我想为UI组件创建一组partials,我可以使用不同的对象调用它们来生成标记:

<div class="device">
  This is my device default name: {{ defaultName }} <br/>
  This is my device current state: {{ currentState }} <br/>
  This is my device last state: {{ lastState }}
    {{> options}}
</div>

,部分是:

{{#each options}}
<span data-value="{{value}}">Label: </span>{{label}} <br/>
{{/each}}

我希望主模板中的所有内容都使用模型作为上下文,而部分使用我在视图中创建的不同对象。我试图避免让这些选项与我的模型代码结合,哎呀。

更新 我做了一些工作,使用$ .extend

okay
var data = $.extend({}, this.model.toJSON(), this.uiOptions);
this.$el.html(this.template(data));

1 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法之一是拥有两个顶级对象并在第一个模板中使用with帮助程序

Handlebars.compile(templateFile)({model:modelObj,other:OtherObj})

和模板

<div class="device">
    {{#with model}}
    This is my device default name: {{ defaultName }} <br/>
    This is my device current state: {{ currentState }} <br/>
    This is my device last state: {{ lastState }}
    {{/with}}
    {{#with other}}
    {{> options}}
    {{/with}}
</div>