【问题标题】:ng-options in angularjs does not get rebind after change in collectionangularjs 中的 ng-options 在集合更改后不会重新绑定
【发布时间】:2018-03-02 06:48:47
【问题描述】:

我正在使用 dataFactory 通过调用 api 来获取集合。

    productApp.factory("productDataFactory", function($http){
  return {
    getUnits: function() {
      return $http.get('/unit').then(function(resp) {
        return resp.data; // success callback returns this
      });
    },
    getCommodities: function() {
      return $http.get('/commodity').then((resp) => {
        return resp.data;
      })
    }
  };

});

我在 ng-options 中使用商品集合来填充 select 元素的选项。

<select ng-model='selected_Commodity' ng-change="updateGST()" name="commodity" id="commodity" ng-options = " c as c.commodity_name for c in <%= JSON.stringify(commodities) %> track by c "class="form-control  selectpicker" data-size="4" data-live-search="true" data-index="5" >
                              <option value="" ng-hide='selected_Commodity'>Select Commodity</option>
                              </select>

我正在更新一个事件的集合。我在日志中得到更新的值。但它并没有反映在我的观点中。

var getCommodities = function() {
    var deferred = $q.defer();
    productDataFactory.getCommodities().then((data) => {
      if (data.type === 'success') {
        debugger;
        console.log("Inside factory ");
        console.log(JSON.stringify(  data.commodities ));
        deferred.resolve(data.commodities);

      } else {
        // $scope.commodities = [{name : data.type + data.msg}]
        deferred.reject([{name : data.type + data.msg}]);
      }

    })
    return deferred.promise;
  }

$('#commodityModal').on('hide.bs.modal', function () {
    $scope.commodities = []
    getCommodities().then((data) => {
      $scope.commodities = data
      console.log("Inside Hide ");
      console.log(JSON.stringify(  $scope.commodities ));
      $("#commodity").selectpicker('refresh')
      console.log("Refreshed");
    })

  })

请帮助我如何使用更新的值重新绑定我的选择元素。

【问题讨论】:

    标签: angularjs ng-options bootstrap-selectpicker


    【解决方案1】:

    将这一行放在这样的超时内,并添加超时作为依赖项

    $timeout(function(){
       $("#commodity").selectpicker('refresh');
    });
    

    【讨论】:

      【解决方案2】:

      更改 ng 选项

      来自

      ng-options = " c as c.commodity_name for c in <%= JSON.stringify(commodities) %> track by c "
      

      ng-options = " c as c.commodity_name for c in commodities track by c " 
      

      【讨论】:

        猜你喜欢
        • 2017-12-23
        • 2014-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-08
        • 2023-03-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多