2016-08-10 7 views
1

角度1.5.7を使用していて、時間がかかるとリソースの削除を取り消したいと思っています。私は平均的なスタックを使用していますが、時々、私のリソースの削除が保留中と見なされるのが見えます(それはmongoが遅いのですか?)。 *工場: 以下は、私が削除を呼び出す工場及びコントローラからの抜粋である

 .factory('addressesFactory', ['$resource', 'baseURL', function ($resource, baseURL) { 
    return $resource(baseURL + 'addresses/:id', {id: '@_id'}, { 
     'update': { 
     method: 'PUT' 
     }, 
     'delete': { 
     method: 'DELETE' 
     } 
    }); 
    }]) 
  • コントローラからの抜粋:

    $scope.delete = function (address, addressesList) { 
    
    $scope.deleteDisabled=true; 
    
    console.log('[ModeratorsCtrl] Deleting:' + address.name); 
    console.log('[ModeratorsCtrl] ' + addressesList.length); 
    addressesFactory.delete({id: address._id}).$promise.then(
        function (response) { 
        $scope.deleteDisabled=false; 
        console.log('[ModeratorsCtrl] Address deleted successfully'); 
        }, 
        function (response) { 
        $scope.deleteDisabled=false; 
        var message = '[ModeratorsCtrl] Error: ' + response.status + ' ' + response.statusText; 
        console.log(message); 
        } 
    ); 
    

    }。

    私はこの記事How to cancel $resource requestsを見て、キャンセルのリクエストについては、これを読んで

https://docs.angularjs.org/api/ngResource/service/ $リソース#! $ cancelRequest()を使用していますが、少し混乱しています。 誰でも私の実装で約束を取り消す方法に関するベストプラクティスを教えてもらえますか? よろしく、

+0

これは最新のものです:http://stackoverflow.com/questions/35066781/angularjs-cancelrequest-not-available-in-resource – gyc

+0

$ cancelRequest()の使用方法に関するリンクをありがとう私の場合 ? – tuxmobil

答えて

1

が要求をキャンセルし、あなたのリソースがUsersであると言うことができます、あなたはこの時点 `` `要求が約束ですであなたのアクション例えば

var request = Users.query(); 

に名前を付ける必要があります。

request.$cancelRequest(); 

キャンセルすることができます。私のコントローラで、この

.factory('addressesFactory', ['$resource', 'baseURL', function ($resource, baseURL) { 
    return $resource(baseURL + 'addresses/:id', {id: '@_id'}, { 
     'update': { 
     method: 'PUT' 
     }, 
     'delete': { 
     method: 'DELETE', 
     cancellable: true 
     } 
    }); 
    }]) 

::私は私の工場で、次の操作を実行してしまったの助け ため

+0

okありがとう私は、私のコントローラのdeleteコールの後で、:addressesFactoryを使ってそのような呼び出しをしなければならないと思うでしょう。$ cancelRequest();キャンセル可能に設定されていると仮定します:工場ではtrue – tuxmobil

+1

[options](https://docs.angularjs.org/api/ngResource/service/$resource)または ' $ cancelRequest() 'メソッドは公開されません。 – seangwright

0

おかげでこれがベストプラクティスにこだわっ

$scope.delete = function (address, addressesList) { 
    $scope.deleteDisabled = true;//prevent multiple click 

    var deleteRequest = addressesFactory.delete({id: address._id}); 
    deleteRequest.$promise.then(
     function (response) { 
     $scope.deleteDisabled = false; 
     console.log('[ModeratorsCtrl] Address deleted successfully'); 
     }, 
     function (response) { 
     $scope.deleteDisabled = false; 
     var message = '[ModeratorsCtrl] Error: ' + response.status + ' ' + response.statusText; 
     console.log(message); 
     } 
    ); 

    $timeout(function() {//2 seconds then cancel the promise 
     if ($scope.deleteDisabled === true) { 
     console.log('[ModeratorsCtrl] Cancel ...'); 
     deleteRequest.$cancelRequest(); 
     $scope.deleteDisabled = false; 
     } 
    }, 2000); 
    }; 

希望、お気軽にあなたのフィードを返す。

関連する問題