2014-11-04 51 views
0

如果您在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

回答

0

將您自己的isNew添加到您的模型中。也許你想讓cid成爲新的東西,或者當你保存它時,你可能會將自己的旗子設置爲false。這是我過去所做的。

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