3

我有一个基于 angular.js 的单页 webapp 似乎我有性能问题。所以我有主控制器和它的视图,看起来像这样

<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-ctland step2-ctl

所以我的问题是:当我选择第 2 步时,角度是否会解除第 1 步中的所有元素的绑定,删除手表并清理资源?第二个问题 - 当我在步骤之间切换时,角度是否每次都会创建新的控制器实例、添加回调、绑定等?

4

1 回答 1

1

不确定您所说的“是否从 step1 中取消绑定所有元素”的确切含义,但 AngularJS 要做的是销毁ngSwitch指令创建的范围(加上它的子级,从而销毁在 step1 中创建的任何手表)并删除相应的 DOM元素。如果您不使用任何可能在step1.htmlAngularJS 中泄漏资源的糟糕指令,则应清理 DOM 元素和相应的监视。

你的第二个问题的答案是肯定的。

于 2013-10-04T15:42:49.853 回答