下面是我的 mainController 中的一个元素
<img src="loader.gif" ng-hide="done_ajax"/>
我的 js 看起来像这样
//service
app.service('request_service', function(){
this.finished = false;
});
//main ctonroller
app.controller('mainController', ['$scope','request_service', function($scope,request_service){
$scope.ajaxed = request_service.finished;
}]);
// second controller
app.controller('secondController', ['$scope','request_service', function($scope,request_service){
callAPI("getUser", {
method: "GET"
}).success(function (resp) {
$scope.$apply(function () {
request_service.finished = true;
});
});
我使用 angularjs 服务有什么问题吗?我想通过在第二个 Controller 中完成 ajax 调用时传递条件值来隐藏由 mainController 控制的加载程序。
最佳答案
您请求服务的值(value),但您没有观察它的变化。因此,它很可能(取决于 Controller 初始化的顺序和时间)为 false 并保持为 false。
$scope.ajaxed = request_service.finished;
如果你想知道 request_service.finished 何时发生变化,应该是 watched :
$scope.isFinished = aService.isFinished;
$scope.$watch(function() { return aService.isFinished; }, function(newV, oldV) {
$scope.isFinished = newV;
});
关于javascript - angularjs 服务在我的情况下不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32312018/