0

如果我有两个指令,并且需要其中一个使用另一个的控制器,那么以角度完成类似操作的最佳方法是什么?我正在尝试使用require: otherDirective我在文档中看到的东西,但我得到了一个

错误:没有控制器:dirOne

从下面的例子。我的印象是,通过在 require 语句中指定 dirOne,dirTwo 将可以访问 dirOne 的控制器。我在这里做错了什么?

这也是一个plunkr

var app = angular.module('myApp', []);

app.directive('dirOne', function() {
  返回 {
    控制器:功能($范围){

      $scope.options = {
        “opt1”:是的,
        “opt2”:假,
        “opt3”:假,
      }

      this.getOptions = function() {
        返回 $scope.options;
      };

    }
  };
});

app.directive('dirTwo',function() {
  返回 {
    要求:'dirOne',
    链接:函数(范围,元素,属性,dirOneCtrl){
      $scope.options = dirOneCtrl.getOptions();
      警报($scope.options);
    }
  };
});
4

1 回答 1

2

http://plnkr.co/edit/vq7vvz

你的 plunkr 有两个问题:

为了让一个指令需要另一个指令的控制器,这两个指令必须在同一个元素上,或者如果您使用 ^ 符号,则所需的指令可以在父元素上。

  <div dir-one dir-two></div>

此外,在第二个指令中,您将参数称为“scope”,但随后尝试将其用作“$scope”。

link: function(scope, element, attrs, dirOneCtrl) {
  scope.options = dirOneCtrl.getOptions();
  alert(scope.options);
}
于 2013-07-08T20:29:55.870 回答