2017-06-14 56 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