ng-options в angularjs не перепривязывается после изменения в коллекции
Я использую 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");
})
})
Пожалуйста, помогите мне, как я могу привязать мои выбранные элементы с обновленными значениями.
2 ответа
Поместите эту строку в тайм-аут, как это, и добавьте тайм-аут в качестве зависимости
$timeout(function(){
$("#commodity").selectpicker('refresh');
});
Измените параметры 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 "