小胡子模板与不同的状态

时间:2012-02-27 01:43:35

标签: javascript templates backbone.js mustache hogan.js

我的模型上有一个状态标志,可以采用以下四个值之一:活动,非活动,处理或上传。

在胡子模板中,我想根据状态标志的值来打开和关闭模板的不同部分。有没有一个体面的方式来做到这一点?

我真的不想拥有4个不同的模板 - 每个州一个。

我尝试在返回this.get('status') === 'active'的模型上使用isActive,isProcessing等方法,但作为一个函数,它不会传递给模板。

1 个答案:

答案 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}}