挂毯5.4调用的jQuery不止一次(Tapestry 5.4 call jquery more t

2019-10-18 15:37发布

我试图整合引导酥料饼给我的Tapestry 5.4-α-14应用。 我是新来的挂毯,我不知道如何使用JavaScript在那里。

我的问题是我想说明每个元素引导酥料饼在区域循环的区域是刷新时。 首先,我在区内没有元素,那么用户提交一个表单和元素被加载,然后再有更多的用户交互,和其他元素被加载,等等......我想告诉每一个加载元件上的酥料饼在循环。 随着代码波纹管,我能够只显示酥料饼加载第一个元素时,但随后的第二次加载时的酥料饼的丢失。 我还注意到,.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);

我将不胜感激任何帮助,您可以给我。

Answer 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);
    }
});

见这里获取更多信息



文章来源: Tapestry 5.4 call jquery more than once