2016-12-21 7 views
0

У меня есть несколько слайдеров в приложении angularJS. То, что я пытаюсь достичь, - это когда пользователь меняет параметр в раскрывающемся списке выбора, ползунки должны получать обновление с новыми значениями из RestAPI.Force update на ползунах rzModule в AngularJS

Этот пример предназначен для одного из ползунков, но остальное то же самое.

Создание бегунок на контроллере

myCtrl.ageSlider = { 
      value: 17, 
      options: { 
       showSelectionBar: true, 
       ceil: 38, 
       hideLimitLabels: true, 
       floor: 17, 
       onChange: myCtrl.getResults, 
       getPointerColor: function(value) { 
        return '#FFCF00' 
       }, 
       getSelectionBarColor: function(value) { 
        return '#FFCF00' 
       } 
      } 
     }; 

Функция обновления на контроллер, который называется на нг-изменения выберите

myCtrl.updateSliders = function() { 

     //other sliders here that don't need a call on API 

     StaffServices.getMedic(myCtrl.selected.id, 
     function(response) { 
     myCtrl.ageSlider.value = parseInt(response.data.age); 
     myCtrl.getResults(); 
     }, 
     function(response) { 
     console.log('Something went wrong on medic process'); 
     }); 

    } 

и функция getResults() которой вызов службы

myCtrl.getResults = function() { 
     myCtrl.results = myService.myUpdatesCalc(passSomeValues); 
} 

Когда я вручную изменяю слайдер от пользователя interfa ce, onChange запускает функцию getResults. Тратить часы на это и не может найти причину. Любая помощь?

Edit: Это услуга getMedic, чтобы избежать путаницы

service.getMedic = function(id, onSuccess, onError) { 
      $http.get(API_Base + 'api/staff/medic?id='+id, 
      { 
       headers: { 'Authorization': 'Bearer '+$cookies.get('token')} 
      }). 
      then(function(response) { 

       onSuccess(response); 

      }, function(response) { 

       onError(response); 

      }); 
     } 

ответ

0

Угловые $http возвращаемые обещания, и, следовательно, ваши ценности не обновляются. Вам необходимо будет выполнить обещания, а затем обновить его при функции обратного вызова:

myCtrl.getResults = function() { 
    myService.myUpdatesCalc(passSomeValues) //this is your REST API, will return a promise 
    .then(function(response) { //this is the callback function to handle the successful ajax 
    myCtrl.results = response.data; //update your results here! 
    }, function(error) { //this is the callback function to handle the failed ajax 
    console.log('error') 
    }) 
} 
+0

Я обновил свой вопрос. Как вы можете видеть, я делаю то, что вы описали в служебном файле. – Tasos

+0

поэтому 'myUpdatesCalc' не возвращает обещание, а не $ http-звонки? – CozyAzure

+0

№ Это простая функция JS с несколькими математическими вычислениями. Нет $ http – Tasos

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

  • Нет связанных вопросов^_^