イベント内のモデルadd
が で取得されたのcollection.fetch
か、作成されたのかを確認する必要がありますcollection.create
。出来ますか?
collection.on('add', onModelAdded)
collection.fetch()
collection.create({})
function onModelAdded(model, collection, options) {
// created or fetched?
}
イベント内のモデルadd
が で取得されたのcollection.fetch
か、作成されたのかを確認する必要がありますcollection.create
。出来ますか?
collection.on('add', onModelAdded)
collection.fetch()
collection.create({})
function onModelAdded(model, collection, options) {
// created or fetched?
}
create
このオーバーライドのようなものがうまくいくと思います:
create: function(attributes, options) {
options = options || { };
options.came_from_create = true;
return Backbone.Collection.prototype.create.call(this, attributes, options);
}
came_from_create
次に、コールバックで次を探すことができます。
function onModelAdded(model, collection, options) {
if(options && options.came_from_create) {
// We started in a create call on the collection.
}
else {
// We came from somewhere else.
}
}
Backbone が使用したいオプション名を使用しないように注意している場合は、通常、options
引数を使用してデータの一部をピギー バックできます。
新しく追加されました
このモデルはサーバーに保存されていますか? モデルがまだ ID を持っていない場合、それは新しいと見なされます。
バックボーン ソース:
isNew: function() {
return this.id == null;
},
ID を設定せずにモデルを作成する場合、それは新しいモデル (ID のないモデルは新規と見なされる) であるため、model.isNew()
true を返します。
function onModelAdded(model, collection, options) {
if(model.isNew()){
// It's created
}else{
// It's fetched!
}
}