我找到了this相關主題,其中答案建議注意模型更改而不是更改選擇。但在我的例子中,「模型」是列表中的對象的一部分。是否爲列表中的每個對象初始化$watch
正確的方法是?Angular - ngChange在ngModel之前觸發<select>
選擇
<li data-ng-repeat="obj in main.list track by $index">
<select data-ng-change="main.changeStatus(obj)" data-ng-model="obj.status">
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
</li>
changeStatus
我需要更新對象或已接收到正確的對象改變方法。
main.changeStatus = function(obj) {
var r = new Resource(obj);
...
r.$save({...}, function (savedObj) {
...
});
}
解決此問題的正確方法是什麼?
感謝
編輯:我想我沒有問正確的問題。
發佈的代碼沒有達到我在找什麼,因爲更改方法在模型更新之前得到執行,因此我將不正確的/舊的對象發送到後端。現在有幾種方法來解決這個問題
- 創建一個新的變量,並通過對象的列表使用它作爲模型
- 迭代和$看每一個狀態屬性
- 另一個我未知的方式?
意想不到我得到的新對象的變化方法,但我不知道如何。
編輯2:我試圖寫一個小提琴來說清楚,但它在那裏工作。我需要更深入地瞭解我的代碼,因爲問題似乎在其他地方。
你可以這樣做 – 2014-09-23 12:11:29
主要區別在於,當模型以編程方式更改時,ng-change將不會被觸發,它只對輸入值更改作出反應。 – 2014-09-23 12:13:39
好的,但對象只能通過