我有一个基于角度的单页网络应用程序.js 似乎我有性能问题。所以我有主控制器和视图,看起来像这样
<div>
<div data-ng-switch-when="step1">
<div data-ng-include="'/partials/step1.html'"></div>
</div>
<div data-ng-switch-when="step2">
<div data-ng-include="'/partials/step2.html'"></div>
</div>
</div>
对于每一步,我都有自己的控制器,在我们的例子中是step1-ctl
和step2-ctl
。
所以我的问题是:当我选择 step2 时,angular 是否解除了步骤 1 中的所有元素的绑定,删除了手表并清理了资源?第二个问题 - 当我在步骤之间切换时,angular 是否每次都会创建新的控制器实例、添加回调、绑定等?
不确定"angular 是否解除了步骤1中的所有元素"的确切含义,但是AngularJS要做的是销毁由ngSwitch
指令创建的范围(及其子项,从而破坏在step1中创建的任何监视)并删除相应的DOM元素。如果你没有使用任何可能泄漏step1.html
资源的糟糕指令,AngularJS应该清理DOM元素和相应的手表。
第二个问题的答案是肯定的。