我对AngularJS&编译功能: http://plnkr.co/edit/7W9AbpaLqsYCecOWdIlz?p=preview
我编写了一个简单的$ compile结构,因此我可以动态插入不同的html模板。
如果您正在查看BodyController,请参阅&#34; INIT&#34; -Event,我正在更改状态并显示用户界面。< / p>
uiService.changeState("LOGIN");
uiService.showUI("LOGIN_VIEW");
uiService.changeState("GAME");
//Change state - show test one,
uiService.showUI("TEST1_VIEW");
在我跳回登录并更改回GAME之后,他显示了&#34; Test1&#34;三次,以及&#34; Test2&#34;一次,但只是&#34; Test1&#34;应该展示一次。
预编译指令也不会被销毁。
我每次都会触发范围()。$ destroy事件,但似乎核心并没有正确认识到这一点?
希望somone可以帮助我。 感谢
编辑: 交叉链接:https://github.com/angular/angular.js/issues/9190
更新: 发现了这个问题,但不知道如何解决:
编译后:
angularScope = angular.element(document).scope();
$compile(controlEle)(angularScope);
angularScope($ rootScope)将侦听器添加到:
$stateChangeSuccess
此$ stateChangeSuccess-Listener未在
上清除$state.go
如果我自己清除它,那个错误就会消失 - 但不应该是正确的情况吗?
angularScope.$$listeners.$stateChangeSuccess = [];
angularScope.$$listeners.$viewContentLoading = [];
似乎子范围的$ destroy-event不会影响$ rootScope上的监听器。