Angular JS从指令中查看提供程序中的数据

时间:2014-11-26 11:12:44

标签: angularjs directive provider

我有这个指令监视变量并隐藏/显示加载指示符:

}).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()。

是我无法做到的事情。我推测它可以作为服务提供商服务的父服务,服务版本可以正常工作。

0 个答案:

没有答案