[英]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.