子指令的API函数被添加到childHead

Child directives API function getting added to childHead

本文关键字:添加 childHead 函数 指令 API      更新时间:2023-09-26

刚刚遇到一个有趣的问题,下面是小提琴

https://jsfiddle.net/gauravsoni/L9us7etq/1/

'commbase'指令调用'showmessage'指令,它们都使用ng-if来显示一些模板。

showmessage指令有一个叫做showAlert的API函数。问题是,如果我在ng-if(第20行)中调用showmessage,则不能调用函数showAlert,因为它已移动到$$childHead。现在,如果我删除ng-if或使用ng-show,一切都可以正常工作。

似乎在使用ng-if时创建了一个新的作用域,如何解决这个问题?或者有没有更好的方法来显示公共API,使其每次都直接出现在父作用域

我所做的不是将api函数直接绑定到父$作用域,而是将它绑定到父控制器。

暴露API fns的attr是这样的。apis='commbaseCtrl.secondapi',其中commbaseCtrl为父控制器的名称。