首页 > 解决方案 > 此代码在 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() {}    
}  
  }
})();

标签: javascriptangularjs

解决方案


这主要是通过使用我在 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;
}

推荐阅读