[英]AngularJS ng-options not binding
我很难在视图中选择一个选择,以便在模型更改时进行更新。 我正在使用ng-options
如下。
<select ng-options="item as item.empName for item in employees track by item.ID" ng-model="emp.selected">
为了显示这里的问题,我可以构建最简单的案例。
app.controller('Ctrl', ['$scope', function($scope) {
$scope.employees = [
{
"empName": "John",
"ID": 1
},
];
setTimeout(function(){
$scope.employees = [
{
"empName": "John",
"ID": 1
},
{
"empName": "Sam",
"ID": 1
},
{
"empName": "Frank",
"ID": 1
}];
}, 100);
}]);
选择显示'John'并且从不更新以显示其他名称。 添加$scope.$apply();
没有帮助。
你需要使用$ timeout,而不是setTimeout
如果我没有错,问题可能是ngModal。 只需更改ngModel值并检查即可
这是我重写代码的方式。 您可以对该型号进行监视并相应更新。 请记住更新ID,因为您正在使用ID跟踪它们。
angular.module('myApp', []).controller('InputCtrl', ['$scope', '$timeout',function($scope, $timeout) {
$scope.employees = [{
"empName": "John",
"ID": 1
}, ];
// watch on employees model, so that you get updated value.
$scope.$watch("employees", function(newv, old, scope) {
$scope.employees = newv;
console.log(newv)
}, true);
$timeout(function() {
$scope.employees = [{
"empName": "John",
"ID": 1
}, {
"empName": "Sam",
"ID": 2
}, {
"empName": "Frank",
"ID": 3
}];
}, 100);
}]);
在您的html中交叉验证添加Name :{{emp.selected.empName}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.