【问题标题】:How to bind an element of a directive from a parent directive如何从父指令绑定指令元素
【发布时间】:2017-02-23 05:24:05
【问题描述】:

所以我有一个指令,在模板中我有另一个指令。

<parent-directive>

父指令模板.html:

<div>
  <child-directive>
</div>

子指令模板:

<input id="bind-me" />

完全编译后应该是这样的:

<div>
   <input id="bind-me" />
</div>

链接函数中的父直接希望绑定到输入的事件,但它不能,因为似乎子指令尚未编译!

我记录了每个链接的前链接和后链接,我得到了这个排序:

  1. '父预链接'
  2. '父-postlink'
  3. '子预链接'
  4. 'child-postlink'

我不明白如何绑定到子指令输入元素(在子指令模板中找到)。它们都使用 templateUrl,但是两个模板都被缓存了,所以这可能不是问题。

【问题讨论】:

  • 我的建议是在parent-directive 的控制器上创建一个名为link_child 的项目,该函数可以获取您需要的任何内容,以便将它们正确链接在一起。然后,在child-directive 的控制器中,使用您需要的任何参数(例如元素本身)调用parent_controller.link_child() 函数。

标签: javascript angularjs angularjs-directive


【解决方案1】:

您可以观察输入是否存在,并在可用时进行绑定。

link: function(scope, element) {
  var unWatch = scope.$watch(
      function() {
        return element.find('$bind-me');
      },
      function (input) {
        if (input.length > 0) {
          unWatch();
          // bind here
        }
      }
  );
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 2014-08-20
    • 2016-10-24
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    相关资源
    最近更新 更多