Backbone.js的`isNew`没有返回`FALSE`事件()`
问题描述:
如果您在Backbone.js的文档看,中isNew()
描述是:Backbone.js的`isNew`没有返回`FALSE`事件()`
拥有这种模式被保存到服务器呢?如果模型还没有ID,则认为它是新的。
但无论我做什么,isNew
总是返回true
。
正如你可以看到下面,我创建了一个新的模式(它甚至有一个cid
),它添加到集合,运行在收集fetch()
,尽管这一切,isNew
仍返回true
为模型。 save
函数正在运行我正在运行的RESTful API,并且该记录正在成功保存到数据库中。
a = new TodoModel({title: 'hi there'});
> s {cid: "c14", attributes: Object, _changing: false, _previousAttributes: Object, changed: Object…}
a.save();
> Object {readyState: 1, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}
b = new TodoCollection();
> s {length: 0, models: Array[0], _byId: Object, constructor: function, model: function…}
b.add(a);
> s {cid: "c14", attributes: Object, _changing: false, _previousAttributes: Object, changed: Object…}
b.fetch();
> Object {readyState: 1, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}
a.isNew();
> true
所以,我怎么isNew
返回false?
答
将您自己的isNew
添加到您的模型中。也许你想让cid
成为新的东西,或者当你保存它时,你可能会将自己的旗子设置为false。这是我过去所做的。
isNew: function() {
return this.id > 0 ? false : true;
}
您是否从服务器返回唯一ID?这是确定是否默认情况下是“新”的ID。 – loganfsmyth 2014-11-04 01:51:09