0

Rails バックエンドで作成している単純なリスト スタイルのバックボーン アプリがあります。

私はコレクションを持っています:

var ItemList = Backbone.Collection.extend({
  model: Item,

  initialize: function(id) {
    this.id = id;
  },

  url: function(){
    return '/lists/' + this.id + '/items';
  },

});

すべての標準 CRUD 操作は、モデルから正常に機能します。しかし、「余分な」ルートがあります-「クリア」は、1回のショーでリスト内のすべてのアイテムをクリアします。ルートは次のようになります。

/lists/[:id]/clear

これは通常の CRUD 操作の範囲外であるため、通常のコレクションにフックする方法はありますか、それとも別のことを行う必要がありますか?

4

2 に答える 2

2

/lists/:id/clear実行し、実行reset時にコレクションに対して実行する独自のメソッドを追加できます。

clear: function() {
    var _this = this;
    $.ajax({
        url: '/lists/' + this.id + '/clear',
        //...
        success: function() {
            _this.reset();
        }
    });
}

reset引数なしで呼び出すと、コレクションからすべてのモデルが削除されます。

于 2012-05-19T16:03:24.043 に答える
2

コレクションに対して呼び出されるメソッドdestroyを作成し、その中で AJAX リクエストを作成するためのいくつかのアプローチのいずれかを使用できます (バックボーンと調和する順序で)。clearバックボーン モデルclearには異なるセマンティクスを持つメソッドが既にあるため、おそらくコレクション メソッドを呼び出したくないことに注意してください。

  1. Backbone.Model正しい URL と ID で使い捨てインスタンスを作成し、それに対して「destroy」を呼び出します
  2. メソッド「delete」を使用して Backbone.sync を呼び出し、「url」プロパティと空の「toJSON」関数だけを使用して適切な ID を持つ使い捨てモデル オブジェクトを呼び出します。
  3. jQuery を直接$.ajax呼び出します。
于 2012-05-19T16:08:06.013 に答える