0

我创建了一种TabControl,其中我激活Pages并根据PageNumber我显示一个表(ng-repeats)。这个表格是一个自己的指令(一个自制的Grid-Directive)。ngIf减慢应用程序

现在我体验到,如果我的tabpages较少,应用程序比我拥有更多tabpages的速度更快 - 尽管所有页面都使用ngIf,并且在设置相应的PageNumber之前不会呈现。

我相信,这是因为ngIf编译它的内容事件,尽管它不应该,但当我使用探查器时,我不太明白它的意义。我只是看到,“compileNodes”被调用了很多。

有没有人遇到过相同的问题?有解决方法的想法吗?

编辑: 什么也是有趣的是,在第一时间我去tabcontroll(一个单页的应用程序中的链接)它的速度更快,以下时间很慢。就好像某些东西被记住了,尽管当浏览到其他内容时整个标签控件被删除了。

编辑2: 我仍然试图弄清楚。它甚至可以是ngRepeat,因为我在另一个TabControl中显示我的TabControl,这是我用ngRepeat做的。有趣的是:第一次访问我的页面时,速度很快,然后我点击另一个页面,当我回来时它很慢! ngRepeat是否将某些内容保存在缓存中?该浏览器的个人资料告诉我,有在jQuery的data_user一些事情 - >高速缓存未free'd(在Chrome可达数据9MB的每次点击!!)

+0

您是否尝试过使用batarang作为性能计数器? https://chrome.google.com/webstore/detail/angularjs-batarang/ighdmehidhipcmcojjgiloacoafjmpfk – 2014-11-25 11:00:02

+0

你有每一个页面加载到DOM中,然后用'ng-if's删除? – user2943490 2014-11-25 11:16:40

+0

@Alex Choroshin:是的,我使用了Batarang - 但它并没有给我提示,为什么这会比其他一些页面移动绑定等更长。 – NoRyb 2014-11-25 12:04:57

回答

0

自标签视图使用ng-switch代替ng-if,因为它必须遍历所有情况才能显示选项卡,而不是跳到要显示的选项卡。

+0

这是有道理的,我改变它为ng-switch,但它没有改变任何表现。这种情况的表达非常简单(PageNumer === 1),并且代价不是很高。我甚至可以将页面保持原样(仅限于条件),并删除内容(这是一个要素 - 我的网格指令) – NoRyb 2014-11-25 12:09:26

+0

@NoRyb您可以提供沉浸式操作,以便我可以看一看吗? – Claude 2014-11-25 12:22:48

+0

我创建了一个小提琴:http://jsfiddle.net/g23pxwh8/不幸的是我不能提供“真正的”指令。但这是我的总体问题。我的猜测是,角度编译了所有的指令,尽管只有一个页面处于活动状态,并且速度很慢。 – NoRyb 2014-11-25 12:35:17

相关问题