2015-11-05 46 views
2

在應用程序中,我有一個重複控制,並且對於重複中的每個條目,我都有一個相應的引導程序對話框模式。在xpages中加載引導程序模式

我想打開一個特定的模式,當用戶使用提供的URL打開包含散列值的xpage時。散列值對應於模態的id,例如#view:_id1:_id152:objRepeatList:1:_id193:_id200:bootstrapModal

但是我注意到命令$( '#視圖:_id1:_id152:objRepeatList:1:_id193:_id200:bootstrapModal')。模態( '顯示');沒有提供任何結果。

爲了測試顯示()函數,我做了一個簡單的測試腳本,獲取DOM中第一模態分量並嘗試打開它:

$(document).ready(function() {  
    var cardType= '#{javascript:SSApp.getCurrentObjectCollectionCardType()}';  
    if (cardType=="cardPicture"){ 
     var modals = $(".modal"); 
     alert(modals.length);  
     if (modals.length > 0){ 
      var firstModal = modals.first(); 
      alert("we got one"); 
      var firstModalId = "#" + firstModal.attr('id'); 
      alert(firstModal.attr('id'));    
      $(firstModalId).modal('show'); 
     }  
    } 
}); 

我收到的所有警報,但最後一個命令行總是給零結果。

因爲XPage中與局部刷新的作品我也試圖爲更新頁面的事件處理程序中的onComplete事件,但它似乎是一個很大的緩存,然後繞來繞去,有時cardType存儲在內存中以某種方式:

<xp:eventHandler event="onclick" submit="true" 
          refreshMode="partial" refreshId="row-body"> 
          <xp:this.action> 
           <![CDATA[#{javascript:sessionScope.put("collDisplay","cards"); 
SSApp.currentObject.loadRelations(relation.category);}]]> 
          </xp:this.action> 
          <xp:this.onComplete><![CDATA[var cardType= '#{javascript:SSApp.getCurrentObjectCollectionCardType()}'; 

    if (cardType=="cardPicture"){ 


     var modals = $(".modal"); 
     alert(modals.length); 

     if (modals.length > 0){ 
      var firstModal = modals.first(); 
      alert("we got one"); 
      var firstModalId = "#" + firstModal.attr('id'); 
      alert(firstModal.attr('id')); 

      $(firstModalId).modal('show'); 
     } 

    }]]></xp:this.onComplete> 
         </xp:eventHandler> 

任何人都有線索我應該做的更正嗎?

+0

有兩個問題:1)您是否嘗試使用具有相同或不同結果的瀏覽器控制檯啓動模型? 2)您是否嘗試過使用全面刷新,然後才能正常工作? (顯然不可取,但*可能*是必要的) –

回答

3

問題是,由於ID中的「:」,jQuery無法找到對話框。他們必須逃脫。當您需要檢索XPage ID時,您可以使用這個小函數來代替$(這個函數爲Mark Roden)。

function x$(id){ 
    id = id.replace(/:/gi, "\\:"); 
    return ($("#" + id)); 
} 

當您需要XPage項目時,使用此函數代替$()。

x$("view:_id1:_id152:objRepeatList:1:_id193:_id200:bootstrapModal").modal('show');