我使用以下HTML和javascript填充选择框:
<select data-ng-model="selectedTestAccount" data-ng-options="item.Id as item.Name for item in testAccounts">
<option value="">Select Account</option>
</select>
<script type="text/javascript">
angular.module('test', []).controller('TestCtrl', function ($scope, $http) {
$scope.selectedTestAccount = null;
$scope.testAccounts = [];
$http({
method: 'GET',
url: '/Admin/Exams/GetTestAccounts',
params: { applicationId: 3 }
}).success(function (result) {
$scope.testAccounts = result;
});
});
angular.bootstrap(angular.element("body")[0], ["test"]);
</script>
这很好但现在我需要另一个选择列表,当用户从第一个选择列表中选择一个值时选择主题。我认为这是我设置选择并从服务器获取数据的方式:
<select data-ng-model="selectedTestAccount" data-ng-options="item.Id as item.Name for item in testAccounts">
<option value="">Select Account</option>
</select>
<select data-ng-model="selectedSubject" data-ng-options="item.Id as item.Name for item in subjects">
<option value="">Select Subject</option>
</select>
...
$http({
method: 'GET',
url: '/Admin/GetSubjects',
params: { testAccountId: selectedTestAccount }
}).success(function (result) {
$scope.subjects = result;
});
如何制作它,以便当用户从第一个选择框中选择一个值时,它将转到数据库 然后选择主题并填充第二个选择框。
答案 0 :(得分:1)
您可以使用$watch
监视范围变量的更改,并在calback中操作应用的其他部分。
$scope.$watch('testAccounts', function(){
/* get updated values and update other select "model" on success*/
});
可能会考虑为$ http请求创建服务并将其移出控制器,然后从控制器内的服务中获取数据