需要层次结构指令并在子范围内使用父级

时间:2016-01-03 16:35:35

标签: javascript angularjs directive

我希望能够有类似的东西:

<tr property="value">
  <td some-directive></td>
</tr>

然后在someDirective

link: function(scope, el, attrs) {
  console.log(scope.property); // "value"

这是如何实现的?我遇到问题1)要求父指令和2)访问它的范围。这是我尝试过的(指令/属性名称是假的):

app.directive('property', function() {
  transclude: true,
  template: '<ng-transclude></ng-transclude>',
  controller: function(){},
  scope: {
    property: '='
  }
});

app.directive('someDirective', function() {
  require: '^property'
  transclude: true,
  replace: true,
  scope: {
    someDirective: '='
  }
  templateUrl: 'my_template.html',
  controller: function($scope) {
    console.log($scope.property);
  }
});

我不完全明白这是如何运作的。任何人都可以澄清确切的用法吗?

我试图解决的问题是如何避免跨子指令重复定义绑定属性。他们都应该指向控制器范围内的同一个对象,所以我想避免设置每次使用子指令,而只是在父指令上定义它们一次。这可能吗?在此先感谢:)

1 个答案:

答案 0 :(得分:0)

您是否尝试使用$ scope。$ parent.property?

如果要在指令之间共享某些功能,则需要指令。 A指令有一个控制器,其中包含您想要用于子指令的有用函数(让我们说B指令)。