2013-08-20 37 views
1

最近遷移到1.2.0-rc1,並且非常滿意。特別是對於ngIf,與ngShow相比,這可以大大提高渲染性能。 布爾變化時除閃爍外。例如,請參閱下面的plunkr: http://plnkr.co/edit/iYMm0IHZkrRamlaEs9yD?p=previewngSwitch和ngIf在Angularjs中閃爍1.2.0-rc1

在Chrome(v28)上,您會看到前2個實現閃爍,而其他2個實現不閃爍。 在Firefox上,閃爍很少發生。

這是正常的嗎?有沒有辦法避免這種情況?我應該回去使用ngShow

編輯: 作爲SZA說,ngIf和ngSwitch修改DOM,而ngShow使用CSS規則來顯示/隱藏的元件。在角度1.0.7中,ngSwitch已經存在,並且已經在修改DOM,並且非常棒,因爲我們用很多代替ngShow來避免昂貴的渲染未顯示的內容。 現在,如果你看看http://plnkr.co/edit/pIpEYZ5K8xvfd9dhAC74?p=preview,你會發現1.0.7版本的ngSwitch沒有閃爍。

我期待會是這樣的答案:「這是正常的行爲,你正在使用ngSwitchngIf,他們不應該被使用,只有靜態內容應與ngSwitchngIf顯示」或者「這是一個渲染bug,直到它被修復「。當然一個解決方法也會很好(@timp,我已經看到了你的答案,但我恐怕我需要一個工作的例子)。

+0

它幾乎看起來好像是獨立評估ng-if,但是將ng-show/ng-hides彙集在一起​​並同時進行評估......想了解更多信息! –

+0

看來這裏的人真的處於前沿...... – zsong

回答

0

如果您在AngularJS文檔頁面(link)上嘗試ngIf演示,它與選中框快速切換時描述的問題相同。

如果渲染的改進很重要,請嘗試用兩個布爾值代替checked。這樣您可以指定首先評估哪個ngIf的順序。這是一種痛苦,但它確實有效。

+0

對於您建議的解決方案,我需要一個示例,我不確定要理解。 – matthieus

2

如果您查看源代碼,您將看到ngIfngSwitch都與DOM操作相關,而ngShowHide僅操縱CSS而不是DOM。

我猜DOM操作將比CSS更換的成本稍高一些,它在不同的瀏覽器中可能會有所不同。

+0

1.0.7的ng-switch不會閃爍,所以這對我來說就像是一種迴歸。 – matthieus