我正在尝试过滤我的收藏中的一些数据。我正在使用where where for the job但它返回一个空数组。这是代码。
型号:
return Backbone.Model.extend({
urlRoot: server_url + "tasks",
defaults: {
'id': null,
'title': '',
'description': '',
'deadline': null,
'priority': 1,
'status': 1,
'key': '',
'priority_name': '',
'status_name': ''
}
});
收集:
return Backbone.Collection.extend({
url: server_url + "tasks",
model: TaskModel
});
使用它像:
var taskList = new TaskList();
taskList.fetch({
data: $.param({key: $.cookie('SID')}),
success: function(collection, response){
if(response.error){
window.location.replace('#logout');
}
}
});
taskList.where({status: 1});
taskList包含所有数据。它不是空的。 我尝试了很多组合,但每次都很难过。
我也从以下帖子咨询过但结果相同。
Backbone collection where clause with OR condition
Filter backbone collection by attribute value
toJSON on Backbone.Collection#where?
我在这里缺少什么?
答案 0 :(得分:1)
您发布的代码似乎没有任何问题,但是您没有向我们展示您Collection
的人口。请注意,Backbone.Collection.where
只需literal
并返回一个匹配的Backbone.Model
数组。我已经使用了您的代码并对其进行了简化,以演示一个有效的示例:http://jsfiddle.net/CK3Hz/
根据以下评论进行编辑
Backbone.Collection.fetch
的{{1}}回调会收到success
个参数。如果您要在(collection, response, options)
上执行where
,这应该可以。
我已提供another jsfiddle来演示使用事件传播,我认为这是您的最终目标。