gpt4 book ai didi

angularjs - 如何将 HTTP 请求从 AngularJS Controller 移到服务中?

转载 作者:行者123 更新时间:2023-12-04 10:19:07 24 4
gpt4 key购买 nike

我有以下代码片段:

    angular.module('test', []).controller('TestCtrl', function ($scope, $http) {
$scope.selectedTestAccount = null;
$scope.testAccounts = [];

$http({
method: 'GET',
url: '/Admin/GetTestAccounts',
params: { applicationId: 3 }
}).success(function (result) {
$scope.testAccounts = result;
});
}

有人建议我也许应该考虑为 $http 请求创建服务
有人可以给我一个例子,说明我如何为上面的代码做到这一点。特别是我不确定如何设置服务并使 Controller 注入(inject)它。

最佳答案

您的服务需要如下所示:

angular.module('testaccount', []).
factory('TestAccount', function($http) {
var TestAccount = {};
TestAccount.get = function(applicationId, callback) {
$http.get('/Admin/GetTestAccounts?applicationId=' + applicationId).success(function(data) {
callback(data);
});
};
return TestAccount;
});

您的 Controller 需要注入(inject)服务,使用参数调用服务对象,并发送回调函数:
angular.module('test', ['testaccount']).controller('TestCtrl', function ($scope, TestAccount) {
$scope.selectedTestAccount = null;
$scope.testAccounts = [];

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

阅读更多关于 service dependency injection在教程中。

关于angularjs - 如何将 HTTP 请求从 AngularJS Controller 移到服务中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15727524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com