ng-change with ng-repeat on选择下拉菜单仅触发一次

时间:2016-07-22 18:27:49

标签: javascript angularjs

这是我的控制器:

     App.controller('LicenseController', ['$scope', 'licenseService', function($scope, licenseService) {
      var self = this;

      $scope.productTypes = {name:'', productID:''};
      self.productTypes = {name:'', productID:''};
      $scope.selectedProduct = {name:'', productID:''};
      $scope.productVersions = {productVersion:'', versionID:''};
      self.productVersions = {productVersion:'', versionID:''};

      $scope.fetchProductType = function(){
          licenseService.fetchProductType()
              .then(
                           function(d) {
                                self.productTypes = d;
                                $scope.productTypes = d;
                                console.log($scope.productTypes[1].name);
                                console.log($scope.productTypes[1].productID);
                           },
                            function(errResponse){
                                console.error('Error while fetching Currencies');
                            }
                   );
      };

      $scope.fetchProductType(); 

      $scope.getProductVersions = function(){

          console.log($scope.selectedProduct.productID);
          licenseService.getProductVersions($scope.selectedProduct.productID)
                  .then( 
                          function(d) {
                              $scope.productVersions = d;
                              self.productVersions = d;
                              console.log($scope.productVersions[1].productVersion);
                              console.log($scope.productVersions[1].versionID);
                         },
                          function(errResponse){
                               console.error('Error while creating User.');
                          } 
              );
      };

  }]);

和HTML:

<tr>
                                                            <td>
                                                              <label for="sel1">Product Type</label>
                                                              <select class="form-control" id="sel1" ng-model=productTypes ng-change="getProductVersions()">
                                                                <option ng-repeat="type in ctrl.productTypes" value="" >
                                                                    {{type.name}} 
                                                                </option>                                                            
                                                              </select>
                                                            </td>
                                                        </tr>

                                                        <tr>
                                                            <td>
                                                              <label for="sel1">Product Version</label>
                                                              <select class="form-control" id="ver" ng-model="productVersions" >
                                                                <option ng-repeat="version in ctrl.productVersions" value="" >
                                                                    {{version.productVersion}} 
                                                                </option>                                                            
                                                              </select>
                                                            </td>
                                                        </tr>
首次更改产品类型时,

ng-change触发器仅触发一次。我还想在更改时传递所选的产品类型。有人可以帮我怎样做吗?

1 个答案:

答案 0 :(得分:2)

我遇到了类似的问题。我能够修复它的方法是使用ng-options指令而不是查看选项。

以下是Angular的1.x文档中的示例:

    <select ng-model="myColor" ng-options="color.name group by color.shade for color in colors">

https://docs.angularjs.org/api/ng/directive/ngOptions