2016-06-06 4 views
0

У меня есть объектная модель, которая содержит информацию о представлении. Когда я делаю некоторые изменения на этом объекте, а затем я использую apply, каждый компонент, но ползунок обновляется. Я вижу, что слайдер обновляется только после изменения размера окна. Есть идеи?Ползунок не обновляется после применения

$rootScope.$on('newPrintSelected', function (event, selectedPrinter) { 
     StorageModule.storage.find(collectionName, {_id : selectedPrinter.printer_hardware._id}, function(error, data){ 
      if (error) { //Not Found 
       console.error("Ops. There is something wrong with this action..."); 
      }else { 
        if(data[0].printOptions == null){ 
         $scope.options = angular.copy($scope.default); 
         $scope.options.layerThickness = 30 - ($scope.options.layerThickness * 100); 
         $scope.persistedOptions = angular.copy($scope.default); 
         $scope.persistedOptions.layerThickness = 30 - ($scope.persistedOptions.layerThickness * 100); 
        }else{ 
         data[0].printOptions.layerThickness = 30 - (data[0].printOptions.layerThickness * 100); 
         $scope.options = angular.copy(data[0].printOptions); 
         $scope.persistedOptions = angular.copy(data[0].printOptions); 
        } 
       } 
       $scope.selectedPrinterHardware = angular.copy(data[0]); 
       console.warn($scope.options); 
       $scope.$apply(); 
      }); 
    }); 

Slider:

<div class="slider"> 
    <rzslider rz-slider-model="options.infill" rz-slider-options="slider.infill"> 

    </rzslider> 
</div> 

$ scope.options является объект, используемый в качестве модели. console.warn ($ scope.options); показывает, что объект верен.

Fix:

setTimeout(function(){ $scope.$broadcast('rzSliderForceRender'); }, 25); 

каждый раз, что ползунок результатов сделанный.

Это была документация. Извини за это.

+2

Пожалуйста показать соответствующий код. – ajmajmajma

+0

Где находится слайдер? – Manu

+0

@ajmajmajma Обновлено –

ответ

1

насчет вещания обновления события:

$scope.refreshSlider = function() { 
    $timeout(function() { 
    $scope.$broadcast('rzSliderForceRender'); 
    }); 
}; 

Reference 1Reference 2

+0

Я сделал эту ужасную ошибку, не проверяя документацию. Прошу прощения за этот вопрос. @Manu, ваш ответ помог мне, но мне пришлось немного поменять его на работу. Проверьте последнее обновление, пожалуйста. –

Смежные вопросы