在数据/令牌抛出错误之前正在调用Angular指令

时间:2017-01-24 12:07:01

标签: angularjs angularjs-directive token

我有一项服务可以授权我的用户并获得令牌。我在附加到正文的主控制器上使用它(index.html)

这应该是我的应用程序中的首要任务。

在我的index.html中有2个指令(正在使用需要该令牌的服务)

 angular.module('app').directive('directive1', function () {
  return {
  templateUrl: directive1.html,     
  controller: function (thingsService) {
        //
   }
 }
});

它会抛出一个错误,因为在使用指令时尚未定义令牌。

ng-if == token

我在html指令调用(index.html)上找到了基于{{1}}的解决方案

这可以胜任,但我并不满意。有更好的解决方案吗?我已经看过手表的解决方案了。

1 个答案:

答案 0 :(得分:0)

以下解决方案并不比ng-if更好,但可能更清晰。我们的想法是将令牌作为参数(而不是服务)传递给指令。该指令监视令牌的变化并做出相应的反应。

以下是展示如何实施此类服务的jsfiddle

.directive('aDirective',
    function() {
      return {
        restrict: 'EAC',
        scope: {
                token: '=', // <= declare a token parameter
            },
        link: function($scope, element, attrs, controller) {
          var controllerOptions, options;
          $scope.$watch('token', function(value){
            // do stuff here
          });        
        }
      };
    }
  )

我还建议您查看this answer,其中演示了如何在加载角度模块之前等待条件/初始化。然后,您可以先初始化令牌,然后加载模块。