AngularJS:指令与范围的控制器通信.Apply不起作用
-
21-12-2019 - |
题
我有一个主体控制器和嵌套指令。我正在看这个例子看控制器和指令之间的通信工作,但我似乎并不工作。
基本上,我想从自定义指令(按钮空购物车)调用主控制器范围函数。请参阅下面的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>";
.
不隶属于 StackOverflow