我有一个模型集合,其中包含一个名为start_time的属性,以秒为单位(0-60 ..),如果没有设置start_time,则为未定义。
我有麻烦来测试此属性是0还是null / undefined,因为把手#if总是将其转换为0
答案 0 :(得分:1)
如果您要提取数据,可以使用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;
});
}
});
答案 1 :(得分:1)
为什么不使用骨干模型默认值?
YourModel = Backbone.Model.extend({
defaults : {
start_time = 'no start time'
}
});
字符串应该计算为true,并且在初始化模型时,任何null或未定义的值都将设置为“no start time”。
答案 2 :(得分:0)
在调用模板之前,你可以做一些工作:make start_time
一个字符串('0'为真)。
您还可以注册helper:请参阅boolean logic within a handlebars template。
应该给出类似的东西:
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);
});