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

时间:2014-11-04 01:48:55

标签: javascript backbone.js

如果你查看Backbone.js文档,isNew()的描述是:

  

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

但无论我做什么,isNew总是会返回true

如下所示,我创建了一个新模型(它甚至有cid),将其添加到集合中,在集合上运行fetch(),尽管如此, isNew仍会为模型返回truesave函数正在运行我运行的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?

1 个答案:

答案 0 :(得分:0)

将您自己的isNew添加到您的模型中。也许你希望cid成为新的东西,或者你保存它时你自己的旗帜设置为false。这就是我过去所做的。

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