我有这个指令监视变量并隐藏/显示加载指示符:
}).directive('loadingIndicator', ['LoadingIndicator', function(LoadingIndicator){
// Runs during compile
return {
// name: '',
// priority: 1,
// terminal: true,
// scope: {}, // {} = isolate, true = child, false/undefined = no change
// controller: function($scope, $element, $attrs, $transclude) {},
// require: 'ngModel', // Array = multiple requires, ? = optional, ^ = check parent elements
restrict: 'A',
template: '<img style="display:bmargin: 0 auto;"src="ico_branding/Loading.gif"/>',
// templateUrl: '',
// replace: true,
// transclude: true,
// compile: function(tElement, tAttrs, function transclude(function(scope, cloneLinkingFn){ return function linking(scope, elm, attrs){}})),
link: function($scope, iElm, iAttrs, controller) {
$scope.display = LoadingIndicator.getLoadingIndicatorDisplayStatus();
iElm.css("display",LoadingIndicator.getLoadingIndicatorDisplayStatus());
iAttrs.src="/ico_branding/Loading.gif";
$scope.$watch(
function() {
return LoadingIndicator.getLoadingIndicatorDisplayStatus()
},
function(){
iElm.css("display",LoadingIndicator.getLoadingIndicatorDisplayStatus());
})
}
};
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
当“LoadingIndicator”是一项服务但我想在我的应用程序中为每个REST调用处理更高时,我得到了这个工作。我正在使用RESTANGULAr所以我在提供程序中转换了我的服务,所以我可以在我的根模块的配置中使用它来在请求拦截器中使用它:
angular.module('loadingIndicator',[]).service('LoadingIndicator', function(){
var display = "none";
this.displayLoadingIndicator = function() {
display="block";
}
this.hideLoadingIndicator = function() {
display="none";
}
this.$get = function(){
getLoadingIndicatorDisplayStatus : function(){
return display;
}
}
})
RestangularProvider.setResponseExtractor(function(response) {
LoadingIndicatorProvider.displayLoadingIndicator();
var newResponse = response;
newResponse.originalElement = angular.copy(response);
console.log(newResponse.originalElement);
return newResponse
})
代码运行时没有任何错误/异常,但指令的“监视”从未被触发。然后我甚至试图使指令中的“显示”变量可以访问(使用它),但这仍然无法正常工作。即使在正确的时间成功调用了displayLoadingIndicator()。
是我无法做到的事情。我推测它可以作为服务提供商服务的父服务,服务版本可以正常工作。