我找到了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
好的,但对象只能通过