0

コレクションから一部のデータをフィルタリングしようとしています。ジョブに where メソッドを使用していますが、空の配列を返しています。これがコードです。

モデル:

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 にはすべてのデータが含まれています。空ではありません。私は多くの組み合わせを試しましたが、毎回うまくいきません。

次の投稿からも相談しましたが、同じ結果です。

OR 条件付きのバックボーン コレクション where 句

バックボーン コレクションを属性値でフィルター処理する

Backbone.Collection#where の toJSON

ここで何が欠けていますか?

4

1 に答える 1

1

投稿したコードに問題があるようには見えませんが、あなたの人口を表示していませんCollectionBackbone.Collection.whereは単純に を取り、literal一致した の配列を返すことを思い出してくださいBackbone.Model。私はあなたのコードを取り、それを単純化して実際の例を示しました: http://jsfiddle.net/CK3Hz/

以下のコメントに従って編集されました

Backbone.Collection.fetchsuccessコールバックは(collection, response, options)引数を受け取ります。whereonを実行する場合collection、これは機能するはずです。

最終目標であると想定するイベント伝播の使用を示すために、別の jsfiddleを提供しました。

于 2013-03-04T08:39:45.687 に答える