使用以下代码,我的加载指示器似乎可以正常工作。但是,如果有人在浏览器中重新加载页面,加载指示符不会消失。这不会发生在索引或根目录上。使用console.log()
我可以看到“加载完成”已被广播,但该指令不会被更新。有任何想法吗?当页面重新加载时,angularjs加载指示器不会清除
我用我的angularjs配置如下代码:
$httpProvider.interceptors.push(function($q, $rootScope) {
return {
'request': function(config) {
$rootScope.$broadcast('loading-started');
return config || $q.when(config);
},
'response': function(response) {
$rootScope.$broadcast('loading-complete');
return response || $q.when(response);
}
};
});
加上以下指令:
.directive("loadingIndicator", function() {
return {
restrict : "A",
template: "<div>Loading...</div>",
link : function(scope, element, attrs) {
scope.$on("loading-started", function(e) {
element.css({"display" : "block"});
});
scope.$on("loading-complete", function(e) {
element.css({"display" : "none"});
});
}
};
})
最后,在HTML:
<div class="loading" loading-indicator></div>
而不是让指令显示/隐藏基于事件的加载指示器,为什么不把它绑定到某个状态变量(可以保存在$ rootScope中)? – JoseM
我忘记提及可能发生的情况是,当页面上第一次绘制加载指示符时,它可能无法捕捉加载完成事件,这就是为什么我建议将它与状态联系起来 – JoseM
是否可以提供一个使用状态变量的例子? –