創建的子範圍我有以下用例 - 我提供了一個對話服務,我根據上下文放置了不同的內容。在service方法中,我手動編譯一個dom元素並使用它來顯示使用jquery ui的對話框。代碼如下:AngularJS不清理由ng-include
var _view = jQuery('<div id="config-dialog"><span ng-include="\'' + $scope.configView + '\'" ng-controller="' + $scope.configController + '"></span></div>');
var _compiled = $compile(_view.contents())($scope);
然後我火將會由控制器進行定義
$scope.$broadcast('config-open', $scope.config);
然後我打開對話框,用戶執行一些示波器功能能夠處理的範圍內活動,關閉對話框。當對話框關閉時,我從DOM中刪除「config-dialog」元素。就像這樣:
$(this).dialog("destroy");
jQuery('#config-dialog').remove();
然而對話框被打開,下一次和一個新的控制器被實例化,我看到了「配置開」被處理兩次,當打開對話框再次它被處理的3倍。這意味着我動態創建的ng-include所附帶的範圍不會被破壞。我調試過Batarang,看到由ng-include創建的子範圍確實沒有清理。 AFAIK AngularJS範圍與dom元素相關聯,當我刪除元素時,範圍應該被垃圾收集,但這不會發生。 我的問題是 - AngularJS應該在我的情況下清理範圍。我做錯了什麼,是否有更適當的方式來實施我的用例?
你有這個小提琴/ plunkr嗎?可能有我們缺少的細節。 –