NGF开关和ngIf在Angularjs 1.2.0-rc1中闪烁
最近迁移到1.2.0-rc1,对此非常满意。特别是对于NGF开关和ngIf在Angularjs 1.2.0-rc1中闪烁,angularjs,Angularjs,最近迁移到1.2.0-rc1,对此非常满意。特别是对于ngIf,与ngShow相比,它可以大大提高渲染性能。 除了布尔值改变时会有一些闪烁。有关示例,请参见下面的plunkr: 在Chrome(v28)上,您会看到前两个实现会闪烁,而其他两个则不会。 在Firefox上,闪烁很少发生 这正常吗?有没有办法避免这种情况?我应该继续使用ngShow 编辑: 正如sza所说,ngIf和ngSwitch修改DOM,而ngShow使用css规则显示/隐藏元素。在angular 1.0.7中,ngSwit
ngIf
,与ngShow
相比,它可以大大提高渲染性能。
除了布尔值改变时会有一些闪烁。有关示例,请参见下面的plunkr:
在Chrome(v28)上,您会看到前两个实现会闪烁,而其他两个则不会。
在Firefox上,闪烁很少发生
这正常吗?有没有办法避免这种情况?我应该继续使用ngShow
编辑:
正如sza所说,ngIf和ngSwitch
修改DOM,而ngShow
使用css规则显示/隐藏元素。在angular 1.0.7中,ngSwitch
已经存在,并且已经在修改DOM,这非常好,因为我们经常使用它来代替ngShow
,以避免对未显示的内容进行昂贵的渲染。
现在,如果您查看,您将看到ngSwitch从1.0.7开始没有闪烁
我期望的答案是“这是正常的行为,你正在使用
ngSwitch
和ngIf
而它们不应该被使用,只有静态内容应该用ngSwitch
和ngIf
显示”或者“这是一个渲染错误,在修复之前一直使用它”。当然,解决方法也很好(@timp,我已经看到了你的答案,但恐怕我需要一个工作示例)。如果你在AngularJS文档页面()上尝试ngIf演示,它与快速切换复选框时描述的问题相同
如果渲染方面的改进很重要,请尝试用两个布尔值替换选中的
。通过这种方式,您可以指定首先计算ngIf的顺序。这是一种痛苦,但它确实起到了作用。如果您在AngularJS文档页面()上尝试ngIf演示,它的问题与您在快速切换复选框时描述的问题相同
如果渲染方面的改进很重要,请尝试用两个布尔值替换选中的
。通过这种方式,您可以指定首先计算ngIf的顺序。这是一种痛苦,但它确实起到了作用。如果你查看源代码,你会发现ngIf
和ngSwitch
都与DOM操作有关,而ngShowHide
只操作CSS而不是DOM
我想DOM操作在回流方面要比CSS更改稍微贵一些,而且在不同的浏览器中可能会有所不同 如果查看源代码,您将看到
ngIf
和ngSwitch
都与DOM操作相关,而ngShowHide
只操作CSS而不是DOM
我想DOM操作在回流方面要比CSS更改稍微贵一些,而且在不同的浏览器中可能会有所不同 我在google group上问了同样的问题,答案是这是动画模块中的一个bug:
删除对动画模块的依赖将修复闪烁现象。我在google group上问了同样的问题,答案是这是动画模块中的一个bug:
删除对动画模块的依赖关系将修复闪烁。它几乎看起来像是ng if单独计算,但ng show/ng HIDE合并在一起并同时计算。。。想知道更多关于这个!这里的人似乎真的处于前沿……似乎ng if的评估是独立的,但ng show/ng show的评估是集中在一起的,同时进行评估。。。想知道更多关于这个!这里的人似乎真的很前沿…对于你建议的解决方案,我需要一个示例,我不确定是否理解。对于你建议的解决方案,我需要一个示例,我不确定是否理解。顺便说一下,1.0.7的ng开关不会闪烁,这对我来说就像是一个回归。顺便说一句,从1.0.7开始的ng开关不会闪烁,所以这对我来说就像是一个回归。已从rc2修复。已从rc2修复。