在控制器前执行指令代码
Execute directive code before controller
嗨,我试图创建一个显示加载框实现,但我似乎有一些问题。以下是目前为止的内容:
我已经创建了一个httpInterceptor: mainModule.factory('httpLoadingInterceptorSvc', ['$q', '$injector', 'EVENTS', function ($q, $injector, EVENTS) {
var httpInterceptorSvc = {};
httpInterceptorSvc.request = function (request) {
var rootScope = $injector.get('$rootScope');
rootScope.$broadcast(EVENTS.LOADING_SHOW);
return $q.when(request);
};
httpInterceptorSvc.requestError = function (rejection) {
hideLoadingBox();
return $q.reject(rejection);
};
httpInterceptorSvc.response = function (response) {
hideLoadingBox();
return $q.when(response);
};
httpInterceptorSvc.responseError = function (rejection) {
hideLoadingBox();
return $q.reject(rejection);
};
function hideLoadingBox() {
var $http = $injector.get('$http');
if ($http.pendingRequests.length < 1) {
var rootScope = $injector.get('$rootScope');
rootScope.$broadcast(EVENTS.LOADING_HIDE);
}
}
return httpInterceptorSvc;
}]);
然后我把这个指令添加到httpProvideR的拦截器中:
$httpProvider.interceptors.push('httpLoadingInterceptorSvc');
然后创建了一个指令:
mainModule.directive('loadingDir', ['EVENTS', function (EVENTS) {
var loadingDir = {
restrict: 'E',
templateUrl: 'App/scripts/main/directives/loading/LoadingDir.html'
};
loadingDir.link = function (scope, element) {
element.hide();
scope.$on(EVENTS.LOADING_SHOW, function () {
element.show();
});
scope.$on(EVENTS.LOADING_HIDE, function () {
element.hide();
});
};
return loadingDir;
}]);
然后添加了一个简单的ajaxCall,在控制器上发出警告消息:
dataSvc.getCurrentDate().then(function(currentDate) {
alert(currentDate);
});
我把指令放在html页面上:
<loading-dir></loading-dir>
现在我的问题是指令代码在控制器代码之后执行,这使得指令相对有用,直到页面加载。是否有任何方法使指令代码在控制器之前执行?
你可以在你的页面前添加一个div:
<body>
<div controller="beforeController">
<loading-dir></loading-dir>
</div>
[Rest of the page]
</body>
相关文章:
- 这段jquery代码在angular指令中不起作用
- 指令中的跟踪代码脚本
- 验证指令代码在ng重复中的每个项目上执行
- 用于按键重定向的 AngularJS 代码应该是服务或指令
- 角度:不呈现模板的指令代码
- 如何将 javascript 或 jquery 代码添加到 angularjs 指令中
- 角度指令限制 E 中断代码
- Angular.js 和 Fabric.js:一旦代码移动到 Angular 指令,Fabric canvas 就会改变
- 范围更改不会;t执行指令中的代码
- Angular JS-需要与页面上的所有指令进行通信,这些指令来自只运行一次的服务中的代码
- 指令's的代码在我得到数据之前就启动了
- Angularjs将代码转换为指令或ng重复
- 写angular指令时,我应该把公共代码放在哪里?
- 在ng-src之后运行指令代码
- 如何在不发送HTML代码的情况下共享AngularJS指令
- 如何在angularJS中重构指令代码
- 在控制器前执行指令代码
- Angular测试不执行指令代码
- 在angularjs 1.2.29中,自定义指令标签不会触发指令代码
- 如何在Angular中更改状态时停止指令代码的运行