簡體   English   中英

在xpages中加載引導程序模態

[英]Load bootstrap modal in xpages

在一個應用程序中,我有一個重復控件,對於重復中的每個條目,我都有一個相應的引導對話框模態。

當用戶使用提供的網址(包括哈希值)打開xpage時,我想打開某個模式。 哈希值對應於模態的ID,例如#view:_id1:_id152:objRepeatList:1:_id193:_id200:bootstrapModal

但是我注意到命令$('#view:_id1:_id152:objRepeatList:1:_id193:_id200:bootstrapModal')。modal('show'); 沒有提供任何結果。

為了測試show()函數,我制作了一個簡單的測試腳本,該腳本獲取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可以部分刷新,所以我也嘗試了eventHandler的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>

有人知道我該怎么做嗎?

問題是jQuery由於id中的“:”而找不到對話框。 他們必須逃脫。 當您需要檢索XPages ID時,可以使用以下一個小功能代替$(該字符歸於Mark Roden )。

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

當需要XPages項時,請使用此函數代替$()。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM