2017-06-14 104 views
0

完成我有我打电话,通过项目的一些清单,剪接,将让网络通话在新排序列表数据库发送功能只排序。如何允许当网络呼叫angularjs

我的问题是,我想只允许一次网络通话结束后用户重新排序。我试图用承诺方法来做到这一点,但它似乎对我没有好处。

我完成设置为false一个变量,一旦网络电话已经完成......所以,如果有人的完成这样的事情之前,一些建议,将不胜感激我的做法可能是错误的将其更改为正确的。

这里是我迄今为止...

$scope.moveDown = function(array, element) { 
     var index = array.indexOf(element); 
     var completed = false; 

     if(index === -1){ 
      return false; 
     } 

     if(array[index + 1] && completed === true){ 
      // rearranging elements 
      array.splice(index, 2, array[index + 1], array[index]); 
      // network call 
      teacherList.saveOrder(id, teachers).then(function(resolve) { 
      resolve(completed === true); 
      }); 
     }else { 
      // Do nothing 
      return 0; 
     } 
     }; 

回答

0
的角度,你必须使用的承诺

首先;添加在您的控制器的承诺依赖性:$q

即可;更新你的网络电话是一个承诺:

 var myService = function() { 

       var d = $q.defer(); 

       var configQuery = { 
        'url': myUri, 
        'method': "GET" 
       }; 
       $http(configQuery).then(function(res) { 


        d.resolve(res); 

       }, function(err) { 
        d.reject(err); 
       }) 

       return d.promise; 


      } 

请注意,$ http已经是承诺;我把它解释得更清楚了。

最后;打电话给你的代码时,承诺完成:

//call your http promise 
myService().then(function(){ 
    //success add your function call 
    $scope. moveDown() 
}, function(err){ 
//error callback 
}); 

编辑---

如果你愿意,你可以呼叫添加到您的$ HTTP响应sucess:在

var myFunction = function(){ 
    $http(configQuery).then(function(res) { 
     $scope. moveDown() 

    }, function(err) { 

    }); 
} 
+0

嗯,所以我的案例...我应该把重新排序函数$ scope.movdDown()内网络调用? – jeremy

+0

YEs;当你的网络通话承诺完成时。 使用该示例更新了我的回复。 – aorfevre