Angularjs:指令加载顺序

ycc*_*eam 4 javascript angularjs angularjs-directive

我在同一页面上有两个指令,但是在不同的元素上.像这样的东西:

<div directive-one>
    <div directive-two></div>
</div>
Run Code Online (Sandbox Code Playgroud)

在directiveOne中,我创建了一些变量(比方说$scope.pageConfig.variable).我想使用directiveTwo来使用这个变量.

问题 - directiveOne并不总是在directiveTwo之前加载.

问题是 - 有没有办法确保directiveOne在directiveTwo之前加载,以便变量可用于directiveTwo?

谢谢 :)

更新:我发现答案应该是使用directiveOne中的控制器,如下所示:

return {
controller: function($scope){ $scope.variable = variable; },
link : ...
}
Run Code Online (Sandbox Code Playgroud)

问题是我以这种方式使用它时会收到错误[$ injector:unpr].这应该解决我的问题吗?知道为什么这会给我造成错误吗?

mir*_*ron 6

如何在directiveB中要求directiveA:

var myApp = angular.module('myapp', [])
.run(function(){

});

myApp.directive('fooDirective', function() {
    return {
      restrict: 'A',
      controller: function(){
        this.pageConfig = {
          someVaraible: 'value from foo'
        };
      }
    }
  });

  myApp.directive('barDirective', function() {
    return {
      restrict: 'A',
      require: '^fooDirective',
      link: function(scope, element, attr, fooDirectiveController){
        console.log(fooDirectiveController.pageConfig);
      }
    }
  });
Run Code Online (Sandbox Code Playgroud)

这是一个关于扩展指令的Plunk和更多信息,以及更多信息