Гобелен 5.4 вызов jquery более одного раза
Я пытаюсь интегрировать Bootstrap popover в свое приложение Tapestry 5.4-alpha-14. Я новичок в Tapestry, и я не уверен, как использовать там JavaScript.
Моя проблема заключается в том, что я хочу показать всплывающее окно Bootstrap для каждого элемента в цикле зоны при обновлении зоны. Сначала у меня нет элементов в зоне, затем пользователь отправляет форму, и элемент загружается, а затем еще какое-то взаимодействие с пользователем, загружается еще один элемент и т. Д. Я хочу показать всплывающее окно для каждого загруженного элемента. в петле. С помощью приведенного ниже кода я смог показать поповер только тогда, когда был загружен первый элемент, а затем, когда загружен второй элемент, поповер потерян. Я также заметил, что код.js не был вызван при второй загрузке.
Часть кода.tml:
<t:zone t:id="selectedPagesZone" id="selectedPagesZone">
<div class="well" t:type="Loop" t:id="selectedLoop" t:source="selectedPages" t:value="item">
<div class="pop" data-toggle="popover" rel="popover" data-placement="top" data-container="body" data-content="Content" title="Title">
...
</div>
</div>
</t:zone>
Часть кода.java:
void onSuccess() {
...
ajaxResponseRenderer.addRender(selectedPagesZone).ajaxResponseRenderer.addCallback(new JavaScriptCallback() {
public void run(JavaScriptSupport javaScriptSupport) {
javaScriptSupport.require("popover");
}
});
Код popover.js:
(function ($) {
options = {
placement:'right',
trigger: 'hover',
container: 'body',
html: true
}
$('.pop').popover(options);
$('.pop').popover('show');
})(window.jQuery);
Буду признателен за любую помощь, которую вы можете мне дать.
1 ответ
require.js выполнит тело вашего js только один раз. Вы должны определить функцию, которая настраивается один раз, но выполняется несколько раз.
popover.js
define(["jquery"], function($) {
var privateFunc = function(args) {
options = {
placement:'right',
trigger: 'hover',
container: 'body',
html: true
};
$('.pop').popover(options);
$('.pop').popover('show');
};
return { publicFunc: privateFunc};
});
код Java
ajaxResponseRenderer.addCallback(new JavaScriptCallback() {
public void run(JavaScriptSupport javaScriptSupport) {
JSONObject args = new JSONObject("foo", "bar");
javaScriptSupport.require("popover").invoke("publicFunc").with(args);
}
});
Смотрите здесь для получения дополнительной информации