2012-05-20 54 views
1

我對於在視圖中使用ember js的div緩存有個疑問。避免重新激活視圖時從頭開始重新渲染Flash對象

我渲染一個非常繁重的應用程序作爲視圖的一部分,我想在視圖之間切換,但不一定必須從頭重新加載Flash應用程序。我最好希望它「隱藏」。

是否有燼這樣做的 目前我實現這個使用https://github.com/ghempton/ember-routemanager和閃光燈的應用程序留在/#媒體之一,另一個在一個通道/#發佈 因此,當用戶進入/#媒體媒體.swf獲取加載和/#發佈publishing.swf加載到容器div。這些路由中的每一個都有一個與它們關聯的相應視圖類,用於呈現Flash對象標記。

在過去,我用jquery來隱藏容器div,但我正在尋找一個更乾淨的解決方案。

回答

2

這聽起來像你想要的功能是能夠重用視圖實例和它的狀態DOM。我對如何完成這項工作有一些想法,遺憾的是,如果沒有一些討厭的黑客行爲,現在是不可能的。

另外,不幸的是,如果您將它們移動到DOM中,或者如果您更改其可見性,它們似乎會被重新渲染。根據我所知,爲了「隱藏」閃存對象而不會導致重新渲染,您只能使用CSS將其移出屏幕。

更新:

這裏有一個工作的jsfiddle例如:http://jsfiddle.net/EE3B8/1

不幸的是,該技術不會爲Flash對象的工作,因爲在DOM移動它們將導致他們重新加載。這將是消除昂貴的DOM創建/視圖實例化的好方法。

+1

我發現隱藏Flash對象的另一種方法是將容器div的高度和寬度設置爲0,這基本上使其隱藏,而不會導致Flash Player卸載swf。 –

+0

我很有興趣瞭解你正在考慮的黑客行爲。也許這可能是我可以研究的東西。 –

+1

下面是一個可用的jsFiddle示例:http://jsfiddle.net/EE3B8/1/ 不幸的是,該技術不適用於Flash對象,因爲在DOM中移動它們將導致它們重新加載。這將是消除昂貴的DOM創建/視圖實例化的好方法。 – ebryn