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?

+0

您是否从服务器返回唯一ID?这是确定是否默认情况下是“新”的ID。 – loganfsmyth 2014-11-04 01:51:09

将您自己的isNew添加到您的模型中。也许你想让cid成为新的东西,或者当你保存它时,你可能会将自己的旗子设置为false。这是我过去所做的。

isNew: function() { 
    return this.id > 0 ? false : true; 
}