繁体   English   中英

AngularJS ng-options无法绑定

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM