如果存在稱爲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)指定。 –