我目前正在尝试将一些角度集成到我们的MVC应用程序中。这需要对角度如何编译DOM有一些更深入的了解,但它似乎似乎无法实现。
基本上,我有一堆代码(我无法触摸)控制加载到DOM的页面。这使用JQuery。
我所拥有的是ng-include
加载到模板中,这样就可以让我获得有意义的' DOM。因为这个元素是通过AJAX加载的,所以我必须在插入时手动$compile
。
这可以正常工作,直到我切换到另一个视图,然后再返回。控制器再次实例化(如预期的那样),但前一个仍在响应事件。
我认为我需要$destroy
旧控制器及其所有子范围,但我如何获得它们?
答案 0 :(得分:1)
你所缺少的是摧毁事件监听器$scope.$on(notifyRefreshEvent, ...
而你通过做这样的事情来做到这一点。这是解决此问题的EventService
代码段:
app.service('EventService', function($rootScope){
var notifyRefreshEvent = "contact::refresh";
var eventListenerDestroy;
return {
...
}
...
function onContactRefresh($scope, handler) {
eventListenerDestroy = $scope.$on(notifyRefreshEvent, function (e, data) {
eventListenerDestroy(); // this guy destroys it
handler(data);
});
}
});
另外,这里是forked codepen solution