如果存在称为Person
的骨干模型,该模型具有属性firstName
,lastName
。通常,访问它就像person.get('firstName')
和person.get('lastName')
。如何访问手柄模板中的骨干模型属性
如何在Handlebar模板中执行类似的操作,其中person
已经暴露给上下文。
如果存在称为Person
的骨干模型,该模型具有属性firstName
,lastName
。通常,访问它就像person.get('firstName')
和person.get('lastName')
。如何访问手柄模板中的骨干模型属性
如何在Handlebar模板中执行类似的操作,其中person
已经暴露给上下文。
当您渲染Handlebars模板时,您需要传入模型的属性。推荐的方法是呼叫Model.toJSON
,它返回模型内部attributes
散列的副本。
var template = Handlebars.compile(templateHtml);
var rendered = template({ person: model.toJSON() });
在模板中,您可以通过属性名称访问上下文。
<span>{{person.firstName}} {{person.lastName}}</span>
其实我有很多地方跟.toJSON所以我开发了一个把手修改处理骨干型号:
https://gist.github.com/4710958
它会检查,如果值是骨干的实例。模型,如果它是将调用.get()方法。
Backbone.Model应该是全局的才能使用它。
{{ user.address.street }}
会被解析为:
user.get("adress").street
这是否仍然适用于HandleBars v1.3.0?我已经把你的代码片段放到了我的app.js中,但它似乎没有做任何事情。 – ddewaele
对不起,我不再使用把手,所以我不知道。你看到控制台上有任何错误吗?如果你这样做,我们可以在https://gist.github.com/amatiasq/4710958继续讨论它 –
明白了。所以这个想法是将JSON暴露给模板而不是骨干模型。 –
@AkshayRawat,'Model.toJSON'被有趣地命名,因为它返回的不是真的JSON,只是一个普通的javascript对象。如果你想要真正的JSON,你必须调用'JSON.stringify(model.toJSON())' - 但是Handlebars想要的是一个普通对象。 – jevakallio
'toJSON'名称并不是Backbone的错,名称由['JSON.stringify'](https://developer.mozilla.org/en-US/docs/JSON#toJSON()_method)指定。 –