使用以下代碼,我的加載指示器似乎可以正常工作。但是,如果有人在瀏覽器中重新加載頁面,加載指示符不會消失。這不會發生在索引或根目錄上。使用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
是否可以提供一個使用狀態變量的例子? –