2015-11-13 56 views
1

假設您有新路線,路由器會創建模型的新實例。檢測新創建的模型是否已更改屬性

您的模型的屬性綁定到頁面上的一些輸入字段。

我希望能夠檢測如果新的模式已經改變,因爲它的實例。

model.get('hasDirtyAttributes')不幸報告了新情況屬實,因爲它尚未保存。

我想試試model.get('hasDirtyAttributes') && model.get('dirtyType') === 'updated',但dirtyType仍然是created,直到你做第一次保存。

回答

3

您可以撥打model.changedAttributes(),看看它是否是空的(docs),但你不能看到它。 Ex -

Object.keys(this.get('model').changedAttributes()).length > 0 

我不知道在這種情況下可以觀察到的一般屬性。你將不得不遵守一個指定的屬性列表。

你可以重寫你的模型set和有它設置的值 -

set: (key, value) -> 
    @attributeHasChanged = true 
    @_super(key, value) 
+1

沒錯。因爲'changedAttributes()'返回一個對象,所以我最後使用了'Ember.keys(this.get('model')。changedAttributes())。length> 0' – darethas

+0

太棒了!如果它解決了問題,請接受答案 – andorov

+0

我會稍微延長一段時間讓其他人回答,然後接受。你能編輯你的答案,以包括我粘貼的片段嗎? 此外,由於Ember.keys已被棄用,它應該是Object.keys,對此抱歉 – darethas

0

您可以創建對模型這將依賴於任何聲明屬性計算的屬性,如果任何屬性的不同,從它的初始值,otherways假將返回true。

爲了獲得更好的性能,你可以只計算該財產,如果model.get('isNew') === true

相關問題