Struts 2 jQuery Subscribe不止一次被调用

在struts 2 jQuery插件中有一个发布/订阅框架,可用于事件调用。

考虑这个样本….

通过订阅onGridCompleteTopics事件,可以在加载网格时更改网格行为

  

然后在js中:

  $.subscribe('grid_compelete', function(event, data) { //do some thing } 

问题是,如上面的js和网格在同一页面中(它们在一个jsp中),每次我重新加载页面时都会调用subscribe并且subscribe中的代码再次运行。

我怎么能阻止它?! 我在jquery.subscribe.1.2.3找到了一个函数isSubscribed我认为框架应该在内部使用它来避免这个问题。 但事实并非如此!

我也没有找到任何方法来调用和使用这种方法。

每次我重新加载页面时,都会调用subscribe并再次运行subscribe中的代码。

当然,这是标准行为。 如果您需要在整个生命周期中只运行一次,则可以使用会话/ cookie。

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 C

我对onEditInlineSuccessTopics和替换有同样的问题

 $.subscribe('grid_compelete', function(event, data) { 

 $("#gridtable").subscribe('grid_compelete', function(event, data) { //do some thing } 

是最适合我的解决方案。

与destroyTopic相关的另一个版本,使得该主题仅在我第一次编辑行时才起作用,如果我想编辑另一行,则根本不调用该主题。

只需使用return false; 在function结束时。

 $.subscribe('grid_compelete', function(event, data) { return false; });