ng-model不更新选择值

时间:2014-07-18 13:11:04

标签: javascript angularjs

我在使用ng-init更新<select>时遇到问题。

HTML:

<form data-ng-init="showStudent()">
<select id="studbranch" data-ng-model="student.branch"
    data-ng-options="obj.name for obj in branches track by obj.id" required>
    <option value="">-- Select Branch --</option>
</select>
</form>

输出:

<option value="">-- Select Branch --</option>
<option value="1">Branch 1</option>
<option value="2">Branch 2</option>
<option value="3">Branch 3</option>

在JS文件中:

$scope.branches = [{"id":"1","name":"Branch 1"},{"id":"2","name":"Branch 2"},{"id":"3","name":"Branch 3"}];

$scope.showStudent = function() {
    $.getJSON('student.php', function(data) {
        $scope.student = data[0]; $scope.$apply();
        alert($scope.student.branch);
    });
}

在页面加载(init)上,它会发出警报3.这意味着student.branch设置为3.但是选择不会更新。它保持默认值。可能有什么不对?是否在init?

之后设置了选择值

如果我在$('#studbranch').val($scope.student.branch);之后添加alert(),则可以正常使用。

2 个答案:

答案 0 :(得分:1)

请尝试以角度方式而不是jQuery

    app.controller(function($scope, $http){
    ...
$scope.student = [];
     $scope.showStudent = function() {
        $http.get('student.php').then( function(data) {
          angular.copy(data[0], $scope.student); 
           alert($scope.student.branch);
        });
    };
    ...
    }

答案 1 :(得分:0)

您的ng-options应格式如下:

data-ng-options="obj.id as obj.name for obj in branches track by obj.id"

将选择的ng-model分配到右侧id现在将更新选择。