4

データを取得するために $http を直接呼び出すコードがコントローラーにいくつかあります。今、私はこれをサービスに移行したいと考えています。これが私がこれまでに持っているものです:

私のサービス:

angular.module('adminApp', [])
.factory('TestAccount', function ($http) {
    var TestAccount = {};
    TestAccount.get = function (applicationId, callback) {
        $http({
            method: 'GET',
            url: '/api/TestAccounts/GetSelect',
            params: { applicationId: applicationId }
        }).success(function (result) {
            callback(result);
        });
    };
    return TestAccount;
});

コントローラーの内部:

   TestAccount.get(3, function (data) {
      $scope.testAccounts = data;
   })

成功の結果を返すのではなく、成功したか失敗したかを確認できる約束を返すように、これを変更するにはどうすればよいですか?

4

1 に答える 1

3

サービスが promise を返し、それをサービス クライアントに公開するようにします。次のようにサービスを変更します。

angular.module('adminApp', [])
.factory('TestAccount', function ($http) {
    var TestAccount = {};
    TestAccount.get = function (applicationId) {
        return $http({
            method: 'GET',
            url: '/api/TestAccounts/GetSelect',
            params: { applicationId: applicationId }
        });
    };
    return TestAccount;
});

したがって、コントローラーで次のことができます。

TestAccount.get(3).then(function(result) {
   $scope.testAccounts = result.data;
}, function (result) {
    //error callback here...  
});
于 2013-04-14T17:20:07.810 に答える