首页 > 解决方案 > AngularJs 1.x:删除动态创建的范围并取消注册控制器

问题描述

我从我的代码(通常来自提供者)动态创建了一个范围和控制器,如下所示

var controllerFn = function ($scope) {
  /* scope functions and variables */
  $scope.$on('custom_ng_event', function (evt) {
    console.log('Custom evt listened in dynamic scope');
  });
  $scope.$on('$destroy', function () {
    console.log('Dynamically created scope destroyed');
  });
}
var $scope = $rootScope.$new();
var ctrlInstance = $controller(controllerFn, {$scope: $scope}); 

我想在某个时候删除范围并取消注册控制器。我认为 $scope.$destroy() 会完成这项任务,但我认为我遗漏了一些东西,因为它没有给出预期的结果。就像,任何对 $rootScope 的广播仍然反映在动态创建的范围侦听器中。

请帮助我理解我做错了什么。

附加信息:我更喜欢让我动态创建的范围成为根范围的子范围(直接),因为它旨在用于整个应用程序(类似于模态应用程序)。

在此先感
谢巴鲁

标签: angularjsangularjs-scopeangularjs-controller

解决方案


推荐阅读