gpt4 book ai didi

javascript - 从 Controller 访问 angularjs 服务

转载 作者:行者123 更新时间:2023-12-03 06:00:18 25 4
gpt4 key购买 nike

我添加了一些代码来阻止用户交互,同时 Angular $http 请求正在进行中:

controller.js:

var app = angular.module("my_app", ["my_app"]);
app.controller("MyController", ['$scope', '$http', function($scope, $http) {
$scope.blocking = false;
$scope.do_something = function() {
$scope.blocking = true;
$http({
method: "POST",
url: "some.url.com",
data: my_data
}).success(function(data) {
// do something nice
}).error(function(data) {
// do some error handling
}).finally(function() {
$scope.blocking = false;
});
};
}]);

template.html:

<div ng-controller="MyController">
<fieldset ng-disabled="blocking">
<form>
...a bunch of form elements...
...including a "submit" button...
...some of which call "do_something" above...
</form>
</fieldset>
</div>

当我运行“do_something”fn 时,这会正确地将“blocking”设置为 true,这会阻止字段集中的所有用户交互。万岁。

但是,我的代码需要经常做这类事情。所以我尝试将功能转移到服务中:

service.js:

app.factory('$my_service', ['$http', function($http) {
_blocking = false;
return {
getBlocking: function() {
return _blocking;
},
setBlocking: function(blocking) {
_blocking = blocking;
}
}
}]);

然后我上面的“do_something”fn 只是根据需要调用 $my_service.setBlocking 。但是,我不知道该为 ng-disabled 的论据添加什么。

有什么建议吗?

<小时/>

根据@user449689的要求,这里是新的 Controller 代码:

app.controller("MyController", ['$scope', '$http', '$my_service', function($scope, $http, $my_service) {
$scope.do_something = function() {
$my_service.setBlocking(true);
$http({
method: "POST",
url: "some.url.com",
data: my_data
}).success(function(data) {
// do something nice
}).error(function(data) {
// do some error handling
}).finally(function() {
$my_service.setBlocking(false);
});
};
}]);

但我不知道要在 fieldset 元素的“ng-disabled”属性中放入什么内容。

最佳答案

只需更新 Controller 上的 $scope.blocking 以引用服务方法 $my_service.getBlocking 并将 HTML 更新为

<fieldset ng-disabled="blocking()">

在 Controller 上

$scope.blocking = $my_service.getBlocking

关于javascript - 从 Controller 访问 angularjs 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39775291/

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