Javascript Backbone.js`isNew`在`model.save()之后不返回`false`事件`

Javascript Backbone.js`isNew`在`model.save()之后不返回`false`事件`,javascript,backbone.js,Javascript,Backbone.js,如果查看Backbone.js文档,isNew的描述如下: 此模型是否已保存到服务器?如果模型还没有id,则认为它是新的 但无论我做什么,isNew总是会回到现实 正如您在下面看到的,我创建了一个新模型,它甚至有一个cid,将其添加到集合中,对集合运行一个fetch,尽管如此,isNew仍然为模型返回true。save函数正在运行一个restfulapi,记录正在成功保存到DB中 a = new TodoModel({title: 'hi there'}); > s {cid: "c14

如果查看Backbone.js文档,isNew的描述如下:

此模型是否已保存到服务器?如果模型还没有id,则认为它是新的

但无论我做什么,isNew总是会回到现实

正如您在下面看到的,我创建了一个新模型,它甚至有一个cid,将其添加到集合中,对集合运行一个fetch,尽管如此,isNew仍然为模型返回true。save函数正在运行一个restfulapi,记录正在成功保存到DB中

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。