我在使用ng-include和angular-routes更改页面的Web应用程序上工作。 正如我在标题中所说,问题是在页面被更改并且页面的控制器被破坏之后,一些使用过的对象仍留在浏览器内存中。在下面的示例中,我提供了我们使用的控制器和对象的简化版本。这是我们的开发团队编写控制器的方式:
在使用angular-routes改变由MyController控制的页面之后,XController对象仍然挂在内存中。但是,当使用ng-include更改页面时,将清除内存,并从内存中删除XController对象。
controllers.controller(MyController, function () {
function XController() {
console.log("In controller");
}
var xController = new XController();
/** return controller instance */
return xController;
});
PS:我们在控制器中使用了这种类型的编写代码,因为在我们使用的代码中的某处:
/** attach logging mechanism */
LoggerAspect.applyTo(xController);
编辑: @toskv LoggerAspect是我们跟踪模块中的一项服务。
LoggerAspect的部分代码
//An aspect contains advices and the target to apply the advices to.
var aspect = new Aspect.Aspect([beforeAdvice, afterReturning, afterThrowing])
return {
/**
* Applies the aspect to the passed object
*/
applyTo: aspect.applyTo.bind(aspect)
};
Aspect是工厂,Aspect是工厂内的一个功能。
我还尝试从Controller中删除LoggerAspect,并且XController对象仍然挂在内存中。