0

我在 angularJS 应用程序中有几个滑块。我试图实现的是,当用户更改选择下拉菜单上的选项时,滑块应该使用来自 RestAPI 的新值进行更新。

此示例适用于其中一个滑块,但其余部分相同。

在控制器上创建滑块

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'
                }
            }
        };

在选择的 ng-change 上调用的控制器上的更新功能

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);
}

当我从用户界面手动更改滑块时,onChange 会触发该getResults功能。在这上面花费了几个小时,却找不到原因。有什么帮助吗?

编辑:这是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);

          });
      }
4

1 回答 1

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')
  })
}
于 2016-12-21T17:32:14.823 回答