使用jQuery处理Tapestry区域更新

时间:2014-05-02 18:09:57

标签: jquery javascript-events prototype tapestry

我正在将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");
}

MY-module.js:

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

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

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

1 个答案:

答案 0 :(得分:1)

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

区域更新事件的正确名称似乎是&#34; t5:zone:update&#34;。

有关T5.4的更多文档(最新版本现为5.4-beta-5)已开启 http://people.apache.org/~hlship/t5api/

people.apache.org/~hlship/t5api/coffeescript/events.html#section-16