0

モデルのバックボーン コレクションがあります。

MyCollection = Backbone.Collection.extend({
   model: myMymodel;
});

MyModel = Backbone.Model.extend({
...
});

各モデルにはビューがあります

myView = Backbone.View.extend({
  initialize: function() {
    this.model = new MyModel();
  };
});

サーバー側には永続性はありません。これは、クライアント側の情報を構造化するためだけのものです。そのため、モデルには ID がなく、Backbone.sync の URL が構成されていません。

ビュー内から、コレクションからモデルを削除したいと考えています。

私は次のことを試しました:

this.model.trigger( "destroy" );

しかし、それは機能しません。破棄イベントがコレクションに伝播されていません。

私が間違っていることは何か分かりますか?

ありがとう、

4

2 に答える 2

2

コレクションをまったくインスタンス化していないと思います。少なくともコードからそれを理解することはできません。モデル インスタンスを作成するだけでコレクションに追加しない場合、this.model.trigger("destroy");は何もしません。

myView = Backbone.View.extend({
  initialize: function() {
    this.coll = new MyCollection();
    this.model = new MyModel();
    this.coll.add(this.model);
  };
});

モデルがコレクションの一部になったので:

this.model.destroy()

delete API 呼び出しを行い、コレクションから削除されます

this.collection.remove(this.model)

コレクションからモデルを削除しますが、delete API 呼び出しは行いません。

this.model.trigger("destroy");

モデルで破棄イベントをトリガーしますが、モデル自体は破棄しません。モデルcollection.remove(this.model)がコレクションの一部であるかのように。

于 2013-03-07T10:26:18.503 に答える
0

collection.remove(model)サーバー側でモデルを永続化していないため、使用するのに適した関数になります。Backbone.Collection.remove

于 2013-03-06T18:56:20.360 に答える