Backbone.js |过滤收集数据

时间:2013-03-04 07:39:34

标签: backbone.js underscore.js

我正在尝试过滤我的收藏中的一些数据。我正在使用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?

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

您发布的代码似乎没有任何问题,但是您没有向我们展示您Collection的人口。请注意,Backbone.Collection.where只需literal并返回一个匹配的Backbone.Model数组。我已经使用了您的代码并对其进行了简化,以演示一个有效的示例:http://jsfiddle.net/CK3Hz/

根据以下评论进行编辑

Backbone.Collection.fetch的{​​{1}}回调会收到success个参数。如果您要在(collection, response, options)上执行where,这应该可以。

我已提供another jsfiddle来演示使用事件传播,我认为这是您的最终目标。