如果你查看Backbone.js文档,isNew()
的描述是:
此模型是否已保存到服务器了?如果模型还没有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?
答案 0 :(得分:0)
将您自己的isNew
添加到您的模型中。也许你希望cid
成为新的东西,或者你保存它时你自己的旗帜设置为false。这就是我过去所做的。
isNew: function () {
return this.id > 0 ? false : true;
}