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; });