Angular - ng在ngModel之前为<select> </select>触发更改

时间:2014-09-23 12:02:22

标签: javascript angularjs angularjs-directive

我找到了this相关主题,答案建议注意模型更改而不是选择更改。但在我的例子中,&#34;模型&#34;是列表中对象的一部分。是否为列表中的每个对象初始化$watch是正确的方法?

选择

 <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

我需要更新对象或已经在change方法中接收到正确的对象。

main.changeStatus = function(obj) {
  var r = new Resource(obj);
  ...
  r.$save({...}, function (savedObj) {
    ...
  });
}

解决此问题的正确方法是什么?

感谢

编辑:我想我没有提出正确的问题。

发布的代码没有达到我想要的效果,因为更改方法在模型更新之前执行,因此我将不正确的/旧对象发送到后端。现在有几种方法可以解决这个问题

  • 创建一个新变量并将其用作模型
  • 遍历对象列表并$查看每个状态属性
  • 另一个未知的方式?

Idealy我得到了改变方法的新对象,但我不知道如何。

编辑2:我试着写一个小提琴来说清楚,但它在那里工作。我需要深入研究我的代码,因为问题似乎在其他地方。

1 个答案:

答案 0 :(得分:3)

让您澄清问题,您有5个下拉菜单, 每个你有3个选项a,b,c, 你想以清晰的方式做什么? 如果你的意思是在main.list中列出对象,说“更新对象或者已经在更改中收到了正确的对象”,那么你的代码就可以了。