我在使用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()
,则可以正常使用。
答案 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
现在将更新选择。