ここでも、バックボーンに関するいくつかの単純な問題があります。長い説明の代わりに、いくつかのサンプルコードがあります。
var Group = Backbone.Model.extend({
defaults: {
Product: new Products()
},
initialize: function(data){
var _this = this;
var products = new Products(data.Product);
this.set('Product', products);
this.get('Product').each(function(product){
product.on('destroy', function(){
_this.trigger('change');
}, _this);
});
this.bind('change', this.update, this);
},
update: function(){
console.info("something changed");
console.log(this.get('Product').toJSON());
},
});
したがって、グループモデルにはProduct-collectionが含まれ、これには明らかに製品が含まれます。初期化では、製品が変更されて破棄されたときに、グループの更新メソッドがexampleと呼ばれるようにしようとしています。すべてがうまく機能しているようで、イベントが呼び出され、属性は見栄えがしますが、製品モデルでdestroyメソッドを呼び出すと失敗します。アップデートでは、製品コレクションの内容を印刷しようとしますが、削除する前に製品を取得します。500msのタイムアウト後にこのデバッグ行を呼び出すと、内容は問題ありません。製品が削除されるなど。
したがって、私の理解によれば、製品の破棄イベントが呼び出され、コレクションから実際に削除される前にグループに渡されます。私は何が間違っているのですか?