AngularJS - 从子级访问父控制器 - >带有控制器的子指令作为符号

时间:2015-04-29 09:52:41

标签: angularjs angularjs-directive angularjs-scope

我想从parent =>访问一个函数我的指令中的父控制器(带有controllerAs表示法)。我正在使用角1.3.14 我有以下结构:

  • 控制器(带保存功能)
    • (儿童)控制器
      • 带模板的指令(和隔离范围)。在这个模板中,我有一个按钮,它应该从父(父)控制器调用保存功能。

我不想调用$ scope。$ parent。$ parent.save(...) 有没有人有想法?

提前致谢。

2 个答案:

答案 0 :(得分:0)

仅使用$ scope.save()。

在Angular中有scope hierarchy并且通过调用$ scope.save()指令将查看指令的作用域,如果没有save()方法,它将查看父作用域的范围,依此类推。 一个条件是指令没有isolated scope

答案 1 :(得分:0)

除了将所需的函数传递给指令之外,没有其他方法可以做到这一点。这是在隔离范围声明中使用&的原因。

https://docs.angularjs.org/guide/directive

当然,如果该功能只是一个实用功能,那么有更简单的方法。你可以注册一个过滤器。但是如果你想让child指令在某个事件中改变父控制器的状态,那么使用&是最好的解决方案。

如果你需要child指令将参数传递给传递给它的函数,那么你将需要在上面的文档中使用与这句话相关的功能:

  

这是在指令中通过调用close({message:'closing}来指定的   目前'})。然后,本地变量消息将在其中可用   关闭表达。