0

我正在使用以下 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;
   });

我怎样才能做到这一点,以便当用户从第一个选择框中选择一个值时,它将转到数据库并选择主题并填充第二个选择框。

4

1 回答 1

1

$watch您可以在回调中使用和操作应用程序的其他部分来观察范围变量的变化。

$scope.$watch('testAccounts', function(){
  /* get updated values and update other select "model" on success*/
});

Might consider creating service(s) for $http requests and move them out of controller(s) then get data from service within controller

于 2013-03-30T17:09:24.017 回答