gpt4 book ai didi

javascript - Angular JS - 从服务接收信息

转载 作者:行者123 更新时间:2023-11-29 21:23:52 25 4
gpt4 key购买 nike

所以我现在有一对 Controller 和服务正常运行,但我的老板希望我将成功/错误/最终 block 从 Controller 移动到服务。

Controller 函数:

            $scope.createUserButton = function () {
$scope.isBusy = true;
creationService.makeNewUser($scope.form)
.success(function (data) {
var user = JSON.parse(data);
if (typeof user !== 'undefined') {
$scope.testusers.push(user);
}

}).error(function () {
notify({
message: 'Could not create user',
classes: 'alert-danger',
templateUrl: 'partials/settingNotification.html'
});
}).finally(function () {
$scope.isBusy = false;
});
};

服务:

service('creationService', ['restfulRepo', '$http',
function (restfulRepo, $http) {
this.makeNewUser = function (tempuser) {
return $http({
url: 'http://localhost:60098/***/*************/******',
data: tempuser, method: 'PUT'
});
};
}]);

我遇到的问题是,如果我将 success 或 finally block 移动到服务,那么它们将无法访问 isBusy 标志或 testusers 数组。该数组绑定(bind)到 Controller 中显示返回信息的图形。

最佳答案

根据我的回答,您可以让数据绑定(bind)为您减轻这种情况。请注意我们如何设置 Controller 和服务 isBusy 变量。

Controller :

$scope.isBusy = creationService.isBusy; //1-way Data Binding
$scope.createUserButton = function () {
creationService.isBusy = true;
creationService.makeNewUser($scope.form).then(
function(user){
$scope.testusers.push(user);
}, function(error){
notify({
message: error,
classes: 'alert-danger',
templateUrl: 'partials/settingNotification.html'
});
});

};

服务:

service('creationService', ['restfulRepo', '$http', '$q', function (restfulRepo, $http, $q) {
this.isBusy = false;

this.makeNewUser = function (tempuser) {
var defer = $q.defer();
$http({
url: 'http://localhost:60098/***/*************/******',
data: tempuser, method: 'PUT'
}).success(function (data) {
var user = JSON.parse(data);
if (typeof user !== 'undefined') {
defer.resolve(user);
}else{
defer.reject("Undefined user");
}
}).error(function () {
defer.reject('Could not create user');
}).finally(function () {
this.isBusy = false;
});
return defer.promise;
};
}]);

关于javascript - Angular JS - 从服务接收信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37996888/

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