2

我需要知道add事件内部的模型是用 . 检索collection.fetch还是由collection.create. 可能吗?

collection.on('add', onModelAdded)
collection.fetch()
collection.create({})

function onModelAdded(model, collection, options) {
   // created or fetched?
}
4

2 回答 2

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.
    }
}

options如果您小心不要使用 Backbone 想要使用的任何选项名称,通常可以使用该参数来捎带数据位。

于 2013-10-15T21:06:14.310 回答
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!
   }
}
于 2013-10-15T20:49:46.483 回答