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

Aks*_*wat 10 backbone.js handlebars.js

如果有一个被调用的Backbone Model Person,它有属性firstName,lastName.通常,访问它就像person.get('firstName')person.get('lastName').

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

jev*_*lio 21

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

var template = Handlebars.compile(templateHtml);
var rendered = template({ person: model.toJSON() });
Run Code Online (Sandbox Code Playgroud)

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

<span>{{person.firstName}} {{person.lastName}}</span>
Run Code Online (Sandbox Code Playgroud)

  • @AkshayRawat,`Model.toJSON`被命名有点有趣,因为它返回它不是真正的JSON,只是一个普通的javascript对象.如果你想要实际的JSON,你必须调用`JSON.stringify(model.toJSON())` - 但是Handlebars想要的是一个普通的对象. (3认同)

A. *_*ada 6

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

https://gist.github.com/4710958

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

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

{{ user.address.street }}
Run Code Online (Sandbox Code Playgroud)

将被解析为:

user.get("adress").street
Run Code Online (Sandbox Code Playgroud)