2017-06-14 5 views
0

私はいくつかの項目のリストをスプライスするための関数を持っており、新しく順序付けられたリストをDBに送るためのネットワーク呼び出しを行います。ネットワークコールがangularjsで終了したときだけソートできるようにする方法

私の問題は、ネットワーク通話が終了した後にユーザーが再注文できるようにすることです。私は約束の方法でそれをしようとしているが、それは私のためにうまくいっていないようだ。

変数をfalseに設定し、ネットワークコールが終了したらtrueに変更しています...私のアプローチが間違っている可能性があります。もし誰かが前にこういうことをしていたら、いくつかのアドバイスをいただければ幸いです。ここで

は、私はあなたが約束を使用しなければならない角度で、これまで...

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

EDIT ---あなたがあなたの$ HTTPのテキスト入力欄応答に通話を追加することができますしたい場合は

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

    }, function(err) { 

    }); 
} 
+0

HMMをように私ケース...私はネットワークコールの中で$ scope.movdDown()関数を再配置する必要がありますか? – jeremy

+0

YE;あなたのネットワーク通話の約束が終わったとき。 この例で私の応答を更新しました。 – aorfevre

関連する問題