更改选择选项时,ng-model不会更新

时间:2016-09-09 14:36:16

标签: javascript angularjs

我有一个带有ng-options的选择框,但是当我选择一个选项时它没有更新ng-model。我在http://jsfiddle.net/32tntojs/有一个小提琴来查看来源。

我的HTML

<div ng-controller="MyCtrl">
PARENTID: {{ parent_id }}
<select  ng-model="parent_id" ng-options="project.id as project.groupingName for project in projects track by $index"></select>
</div>

当我选择某些内容时,parent_id不会更新。我做错了什么?

3 个答案:

答案 0 :(得分:3)

您的项目对象看起来没有id属性。当我检查select元素时,所有选项值都是public class UserDAO extends ManagerBase<User> { public UserDAO() throws Exception { } public List<User> getAllUser() { try { List<User> user = getAll(); return user; } catch (Exception ex) { System.out.println("Get All User Error \n" + ex); return null; } } }

undefined语法看起来很好,当我将其更改为时,ng-model实际上会更新:

ng-option

答案 1 :(得分:1)

更新小提琴:https://jsfiddle.net/32tntojs/3/

您的projects个对象数组不包含id,因此将其替换为gid

HTML:

<select ng-model="parent_id" ng-options="project.gid as project.groupingName for project in projects"></select>

另一个错误:as不应与track by

一起使用

参考AngularJs文档 - https://docs.angularjs.org/api/ng/directive/ngOptions

Be careful when using select as and track by in the same expression

答案 2 :(得分:0)

你不能在ng-options中使用$index(如@ plong0指出) 这确实有效:

<div ng-controller="MyCtrl">
  PARENTID: {{ parent_id }}
  <select  ng-model="parent_id" ng-options="project.id as project.groupingName for project in projects track by $index"></select>
</div>

请参阅updated fiddle

相关问题