我有一个主体控制器和嵌套指令。我正在看这个例子看控制器和指令之间的通信工作,但我似乎并不工作。

基本上,我想从自定义指令(按钮空购物车)调用主控制器范围函数。请参阅下面的PLUNKR示例。

plukr: http://plnkr.co/edit/82stlkkxbk6httnmnqlu?p=preview

每当我做console.log(范围。$申请(“extentCart()”)),它是由于某种原因而未确定的。

注意:我正在尝试避免$ rootscope.broadcast尽可能多...

有帮助吗?

解决方案

您正在使用父指令的隔离范围,因此子指令无法访问控制器的范围。

为了在保持父级的隔离的同时提供对该范围函数的访问的子指令,您可以将该函数添加为父指令上的scope: { ... }属性:

scope: {
  ...
  emptyCart: '='
}
.

并将函数名称设置为父指令的视图声明上的相应属性:

<div ... data-show="showPopup" empty-cart="emptyCart"></div>
.

然后,您可以跳过您尝试在植物中使用的所有解决方法,并只是在子指令上设置一个生成的ng-click,以便启动控制器功能:

sHTML = "<button ... ng-click='emptyCart()'>Empty cart</button>";
.

演示

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top