我正在将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功能。到目前为止,我喜欢它!
答案 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