我使用ngInclude指令并定义我自己的控制器
<ng-include
src="'app/streaming/streaming.view.html'"
ng-controller="StreamingCtrl"
ng-if="streamingActive">
</ng-include>
这是在main-page.view.html中定义的,它是我的应用程序的顶级页面,并在app.js中列出如下:
app.config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'app/common/main-page.view.html',
controller: 'HomeCtrl',
reloadOnSearch:false
})
.when('/multiview', {
templateUrl: 'app/common/main-page.view.html',
controller: 'MultiviewCtrl'
})
}]);
流媒体控制如下:
app.controller('StreamingCtrl', ['$scope', function($scope) {
console.log($scope);
$scope.$on('destroy', function () {
console.log('destroy');
});
}]);
每次我在home和multiview页面之间导航时,它看起来像是正在创建一个新的控制器实例。记录范围,每个都有一个新的id,但似乎永远不会调用destroy方法。我认为这会导致内存泄漏,同时创建新的控制器实例,而旧的控制器实例永远不会被破坏。
非常感谢任何想法
C
答案 0 :(得分:1)
这是因为你拼错了毁灭事件,它应该是$destroy
而不是destroy
。
<强> DEMO 强>
.controller('StreamCtrl', function($scope) {
console.log($scope);
$scope.$on('$destroy', function () {
console.log('destroy');
});
});