考慮下面的代碼片段:爲什麼我的Backbone模型hasChanged()總是返回false?
var m = new Backbone.Model({
name: 'joshua'
});
m.set('name', 'something else');
如果我現在請m.hasChanged()
或m.hasChanged('name')
我得到false
。 爲什麼?我的理解是,這兩個應該返回true
。
m.changedAttributes()
也返回false。
這裏是一個小提琴,說明我在做什麼,並期待:http://jsfiddle.net/9cvVv/88/
編輯:看來,除非你通過{ silent: true; }
到set()
方法,然後將火在你的模型change
事件,清除了changedAttributes()
等。實質上,這些屬性僅跟蹤自上次觸發事件以來的更改。
我在文檔中閱讀過,但一開始並沒有真正理解它。
這對我來說似乎不是很有用。我將不勝感激任何解釋,爲什麼這種方式的工作方式,以及達到我想要的結果的最佳方式。 (繞過{silent: true; }
,並放棄change
事件的用法似乎是一種浪費。)
嗯哼。我爲發送一批模型並返回的集合做了一個'save()'方法。想知道爲什麼hasChanged()似乎沒有做任何事情。 :-) 謝謝! – jmk2142 2012-03-28 23:16:03
這在Backbone的新版本中不再是真的;看到我的答案。 – pimlottc 2014-04-02 18:51:51
用骨幹0.9.2保存我的一天... – gor181 2016-01-27 16:16:51