我有一个模型集合,其属性名为 start_time in seconds (0-60..),如果未设置 start_time,则该属性未定义。
我很难测试这个属性是 0 还是 null/undefined,因为把手 #if 总是将它转换为 0
我有一个模型集合,其属性名为 start_time in seconds (0-60..),如果未设置 start_time,则该属性未定义。
我很难测试这个属性是 0 还是 null/undefined,因为把手 #if 总是将它转换为 0
为什么不只使用骨干模型默认值?
YourModel = Backbone.Model.extend({
defaults : {
start_time = 'no start time'
}
});
该字符串的计算结果应为 true,并且在初始化模型时,任何 null 或未定义的值都将设置为“无开始时间”。
如果您正在获取数据,您可以使用collection.parse在模型上设置一个新字段,您可以在视图中对其进行测试。
YourCollection = Backbone.Collection.extend({
url: "/api/foo",
parse: function(res) {
return _.map(res, function(source) {
obj = _.clone(source);
obj.no_start = !obj.hasOwnProperty('start_time');
return obj;
});
}
});
在调用模板之前,您可以做一些工作:创建start_time
一个字符串('0' 为真)。
您还可以注册一个助手:请参阅把手模板中的布尔逻辑。
应该给出如下内容:
Handlebars.registerHelper('if_all', function() {
var args = [].slice.apply(arguments);
var opts = args.pop();
var fn = opts.fn;
if(!args[0] && args[0] != 0) fn = opts.inverse;
return fn(this);
});