Jua*_*nma 13 backbone.js handlebars.js
我想从模板访问我在模型(backbone.js)中实现的计算字段.我是否需要始终定义帮助程序来执行此操作?
我认为问题与我将模型传递给模板的方式有关.如果我传递this.model.toJSON(),我可以访问属性,但不能访问我在其中定义的函数.如果我直接传递this.model,我可以访问该函数,但不能访问骨干模型的属性.
Der*_*ley 17
始终传递this.model.toJSON()给您的模板.
获取计算值需要做的是覆盖toJSON模型上的方法.
MyModel = Backbone.Model.extend({
myValue: function(){
return "this is a calculated value";
},
toJSON: function(){
// get the standard json for the object
var json = Backbone.Model.prototype.toJSON.apply(this, arguments);
// get the calculated value
json.myValue = this.myValue();
// send it all back
return json;
}
})
Run Code Online (Sandbox Code Playgroud)
现在您可以myValue从返回的JSON 访问toJSON,这意味着您可以在视图中访问它.
正如您所提到的,另一个选项是构建辅助方法并使用Handlebars注册它们.除非您有一些功能根据模板的呈现方式而变化,和/或传递给模板的数据,否则我不会为此烦恼.