我的模型上有一个状态标志,可以采用以下四个值之一:活动,非活动,处理或上传。
在胡子模板中,我想根据状态标志的值来打开和关闭模板的不同部分。有没有一个体面的方式来做到这一点?
我真的不想拥有4个不同的模板 - 每个州一个。
我尝试在返回this.get('status') === 'active'
的模型上使用isActive,isProcessing等方法,但作为一个函数,它不会传递给模板。
答案 0 :(得分:4)
AFAIK,通常的方法是使用toJSON
将模型转换为简单的数据blob,然后将数据blob移交给Mustache模板。因此,您需要做的就是提供自己的toJSON
,其中包含您的方法调用作为属性。例如:
toJSON: function() {
var json = Backbone.Model.prototype.toJSON.call(this);
json.isActive = this.isActive();
json.isProcessing = this.isProcessing();
return json;
}
演示(请打开你的控制台):http://jsfiddle.net/ambiguous/22aYH/
然后,您可以在模板中包含以下内容:
{{#isActive}}It is active!{{/isActive}}
{{#isProcessing}}Be patient, we're working on it...{{/isProcessing}}