如何在Handlebar模板中访问Backbone Model属性

时间:2013-01-05 09:07:40

标签: backbone.js handlebars.js

如果存在名为Person的Backbone模型,其具有属性firstNamelastName。通常,访问它就像person.get('firstName')person.get('lastName')

如何在Handlebar模板中执行类似的操作,其中person已暴露给上下文。

2 个答案:

答案 0 :(得分:21)

渲染Handlebars模板时,需要传入模型的属性。建议的方法是调用Model.toJSON,它返回模型内部attributes哈希的副本。

var template = Handlebars.compile(templateHtml);
var rendered = template({ person: model.toJSON() });

在模板中,您可以通过属性名称访问上下文。

<span>{{person.firstName}} {{person.lastName}}</span>

答案 1 :(得分:6)

实际上我有很多地方使用.toJSON所以我开发了Handlebars修改来处理Backbone模型:

https://gist.github.com/4710958

它将检查一个值是否是Backbone.Model的实例,如果它是,它将调用.get()方法。

Backbone.Model应该是全局的才能使用它。

{{ user.address.street }}

将被解析为:

user.get("adress").street