使用jQuery处理Tapestry区域更新

问题描述 投票:0回答:1

我正在将Tapestry应用程序从5.3.7(和got5)迁移到5.4的当前beta版本。在一个特定的页面上,我使用了相当多的自定义jQuery逻辑,这会导致一个问题:

$(document).ready(function() {
        init();
        Event.observe("periodsZone", Tapestry.ZONE_UPDATED_EVENT, function(event) {
            init();
    });
});

这样做是调用init方法来注册我的jQuery事件处理程序,并在区域更新后重新注册它们。

我不确定,如果这是最好的做法(特别是混合jQuery和Prototype)。无论如何,它在5.4中停止了工作。我尝试使用jQuery处理事件:

$("myZone").on("t5:zone:update", function(event) {
    init();
});

但这也不起作用。

5.4中区域更新事件的正确名称是什么?如何正确处理?

另外,是否已有关于如何在Tapestry 5.4中使用jQuery的文档?当然,我不希望测试版能够完整记录,但也许有人仍然可以帮助我。

编辑:我终于重构了我的代码以使用Trigger组件和JavaScriptSupport.require(它基本上与使用JavaScriptSupport.addInitializerCall的5.3相同):

在我的tml中:

<t:trigger event="myEvent"/>

在我的Java代码中:

public void onMyEvent()
{
    javaScriptSupport.require("my-module");
}

我-module.js:

define([ "jquery" ], function($) {
    return function() {
        // do my stuff
    }
}

每次加载或更新包含触发器的区域时,都会执行我的JS代码。

我只是非常慢慢地了解Tapestry允许您使用其Javascript功能。到目前为止,我喜欢它!

jquery javascript-events prototype tapestry
1个回答
1
投票

这可能与您的问题有关,并提供对版本5.4的快速入门的访问:OnEvent examples

区域更新事件的正确名称似乎是“t5:zone:update”。

关于T5.4的更多文档(最新版本现在是5.4-beta-5)在http://people.apache.org/~hlship/t5api/

people.Apache.org/~海量视频/他5API/coffee script/events.HTML#section-16

© www.soinside.com 2019 - 2024. All rights reserved.