我认为我正在做一些愚蠢而且明显错误的事情,但我感到困惑。使用CoffeeScript和marionette骨干,我想在我的集合上创建一个方法,将大多数模型设置为选中,然后将所有选中的模型设置为未选中。我假设
deselectAll: ->
@where({selected: true})
会给我选择的模型,我可以迭代(对于选定的模型)并设置模型。但我无法让@where工作,而是得到:
Uncaught TypeError: _.matches is not a function
来自主干的:
where: function(attrs, first) {
var matches = _.matches(attrs);
return this[first ? 'find' : 'filter'](function(model) {
return matches(model.attributes);
});
},
更新
目前正在使用过滤器:
@filter (model) ->
model.get 'selected'
它似乎比现在更复杂,但也许不是?
答案 0 :(得分:2)
backbone <= 1.2.1
与underscore >= 1.8.0
不兼容。将您的backbone
升级到1.2.2或1.2.3。
在underscore
1.8.0函数中matches
已弃用并重命名为matcher
。见underscore changelog