javascript - 此代码在 Angular JS 应用程序生命周期中的哪个位置加载
问题描述
根据下面的代码,有人可以告诉我在 Angular JS 生命周期的哪个位置加载此代码。我遇到了一个非常神秘的时序问题,有时需要下面代码的 angularjs 控制器会在下面的代码之前加载。有时我可以尝试重现 100 多次,但问题永远不会发生。我想强制此代码在任何其他控制器之前加载。
(function() {
'use strict';
angular
.module('securityMaintenance')
.directive('buttons', buttons);
function buttons() {
var directive = {
restrict: 'AE',
scope: {},
templateUrl: 'app/shared/buttons/buttons.html',
controller: ButtonsController,
controllerAs: 'vm'
};
return directive;
}
ButtonsController.$inject = ['$location', '$route', '$scope', '$rootScope'];
// ReSharper disable once InconsistentNaming
function ButtonsController($location, $route, $scope, $rootScope) {
...
init();
function init() {}
}
}
})();
解决方案
这主要是通过使用我在 GitHub 存储库中搜索数天后发现的指令的优先级成员来解决的。无论如何,它是有角度的 JS,它似乎已经奏效了。priority 成员与设置线程优先级或设置 html 元素的 z-index 同义。我猜它控制模板的编译顺序。
function buttons() {
var directive = {
restrict: 'AE',
priority: 100,
scope: {},
templateUrl: 'app/shared/buttons/buttons.html',
controller: ButtonsController,
controllerAs: 'vm'
};
return directive;
}