我有一個包含兩個組件這是一個選項卡每個裏面,像這樣的VisualForce頁:您是否可以阻止VisualForce組件進行渲染,直至其內容變爲可見爲止?
<apex:tabpanel switchtype="ajax" selectedTab="tab1">
<apex:tab label="First Tab" name="tab1" id="tab1">
<c:firstComponent />
</apex:tab>
<apex:tab label="Second Tab" name="tab2" id="tab2">
<c:secondComponent />
</apex:tab>
</apex:tabpanel>
是否有可能阻止該網頁運行在secondComponent代碼(包含在TAB2),直到用戶實際上點擊第二個標籤?
這是一個更具一般性問題的特定情況:是否有可能在第一次加載時不運行頁面上的所有代碼,並且只有在用戶執行特定操作時才運行它。
(對於想要做到這一點的原因之一是減少查詢的數量在頁面上避免撞上了極限。)
聽起來就像你在懶惰加載後(http://www.appelsiini.net/projects/lazyload,但我認爲它只適用於圖像)。某種onload/onfocus/onclick事件? apex:actionSupport標籤?另外 - 閱讀關於'rendered'屬性(存在於大多數標籤上;設想一個搜索表單,並且只在'rendered = {!results.size> 0}'和'rerender'時顯示pageBlockTable(當commandbutton或commandlink被使用時有用並且該頁面已提交,只需刷新頁面的一部分) – eyescream
好的想法,但不幸的是,當我查看日誌時,它看起來像代碼在使用rendered =「false」時仍然執行,它只是不顯示輸出。 –