我有一个带有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
不会更新。我做错了什么?
答案 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。