我需要判断add
事件中的模型是使用collection.fetch
检索还是由collection.create
创建的。有可能吗?
collection.on('add', onModelAdded)
collection.fetch()
collection.create({})
function onModelAdded(model, collection, options) {
// created or fetched?
}
答案 0 :(得分:2)
我猜这样的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
参数来捎带数据。
答案 1 :(得分:0)
<强>是否新款强>
此模型是否已保存到服务器了?如果 该模型还没有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!
}
}