在支柱2 jQuery插件有一个发布/订阅框架,它可用于事件调用。
考虑这个样品....
当电网通过订阅过载可以更改网格行为onGridCompleteTopics
事件
<sjg:grid id="gridtable" dataType="json"
href="%{url}" gridModel="gridModel" direction="%{pageDir}" width="800"
shrinkToFit="true" onGridCompleteTopics="grid_compelete">
然后在JS:
$.subscribe('grid_compelete', function(event, data) {
//do some thing
}
问题是,如上面js和电网都在同一个页面(他们是在一个JSP),我每次重装一次页面subscribe
被调用,并再次在订阅运行的代码。
我怎样才能阻止它? 我发现一个函数jquery.subscribe.1.2.3
被称为isSubscribed
我认为该框架应在内部使用,以避免此问题。 但它不是!
此外,我没有找到任何方法来调用和使用这种方法。
每次我重装订阅页面时被调用,并再次在订阅运行的代码。
当然,这是标准的行为。 如果你需要的东西,只跑了一次,在整个生命周期中,你可以使用会话/饼干。
onGridCompleteTopics
-这意味着每次网格加载的话题发表。 而每次在页面重载/刷新网格被加载,发布该事件。
希望这样它清除您的疑问。
溶液在被发现的Struts 2的jQuery插件isSubscribe不工作
人们可以使用
$("#gridtable").subscribe('grid_compelete', function(event, data) {
//do some thing
}
或杀死主题(我不喜欢它自己)
$.subscribe('grid_compelete', function(event, data) {
//do some thing
$.destroyTopic('grid_compelete');
}
该isSubscibe仍然存在,它被附加到文件,请参阅Struts 2的jQuery插件isSubscribe不工作由@Roman下完整的代码
我有onEditInlineSuccessTopics和更换同样的问题
$.subscribe('grid_compelete', function(event, data) {
同
$("#gridtable").subscribe('grid_compelete', function(event, data) {
//do some thing
}
是为我工作的最佳解决方案。
有关destroyTopic其他的版本,制作这个专题的工作只是我第一次编辑一行,如果我想编辑另一行,话题并没有被调用。
只需使用返回false; 在函数的末尾。
$.subscribe('grid_compelete', function(event, data) {
return false;
});