1

我有一个模型集合,其属性名为 start_time in seconds (0-60..),如果未设置 start_time,则该属性未定义。

我很难测试这个属性是 0 还是 null/undefined,因为把手 #if 总是将它转换为 0

4

3 回答 3

1

为什么不只使用骨干模型默认值?

YourModel = Backbone.Model.extend({
    defaults : {
        start_time = 'no start time'
    }
});

该字符串的计算结果应为 true,并且在初始化模型时,任何 null 或未定义的值都将设置为“无开始时间”。

于 2013-04-20T14:28:58.927 回答
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;
    });
  }
});
于 2013-04-19T10:57:07.577 回答
0

在调用模板之前,您可以做一些工作:创建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);
});
于 2013-04-19T08:25:44.513 回答