我有一個角1.5(與組件)的應用程序。在部件之一,我有一個本地對象定義爲:角度1.5分量跟蹤對象變化
model.user = {
firstName: 'John',
lastName: 'Smith'
}
然後在標記我用它作爲:
<input class="field" ng-model="model.user.firstName" />
我想要做的是,當用戶進行跟蹤更改爲此字段並記錄事件。我花了一些時間尋找不同的選項,但我想問問使用組件時建議的方法。這是我到目前爲止發現的:
- $ watch(...) - 這很好,因爲我得到了舊的和新的值,但似乎這種方法是不鼓勵的。
- $ onChanges - 這不起作用,因爲這是一個本地對象。
- $ doCheck - 這可能有效,但我沒有得到任何有關更改對象的信息。我必須手動跟蹤以前的值。
- ng-change - 這會起作用,但我有很多字段,並且維護標記可能會變得有點困難。
我正在尋找像Telerik的劍道MVVM的方法。在那裏,我可以將任何對象的更改事件綁定到函數,並檢索已更改的字段,舊的和新的值。這種方法的優點在於,如果我的對象發生變化,我不必對代碼進行任何更改,但更改事件將會選擇新的字段,而無需編寫任何代碼。更清潔,更容易維護。
這是可能的角度1.5與組件?如果是這樣,那麼推薦的方法是什麼?
謝謝。
'ng-change'不需要任何'$ watch'es,所以它在性能方面效果最好。我不確定你通過維護標記是指什麼問題,因爲如果你沒有這樣做,那麼只需花費更多的時間在控制器中維護javascript即可。或者我錯過了你的具體關注點? – CShark
謝謝@CShark。例如,當我使用kendo observables進行工作時,一旦我在對象的「change」事件處理程序中編寫代碼,如果向該對象添加或刪除字段,則不需要觸摸它。我也不必在標記中提及它。如果我使用ng-change,我將不得不確保每個需要跟蹤的字段都有正確的代碼。隨着解決方案的增長,這可能變得更難以管理。正如你所猜測的那樣,我正在大量使用kendo ui :)而且我希望Angular能夠使用類似的機制。 – dpdragnev