在我的系统中,我想向组件添加事件监听器,如下所示:
itemCustGrid.addEventListener(Events.ON_SCROLLING, new EventListener<ScrollEvent>() {...});
然后我检查zk,网格组件不支持onScrolling事件或onScroll事件。
Class HtmlBasedComponent:
* <p>Events:<br/>
* onClick, onDoubleClick, onRightClick, onDrop,
* onMouseOver, onMouseOut, onOK, onCacnel, onCtrlKey and onSwipe.<br/>
所以我在我自己的组件中注册事件如下:
addClientEvent(BaseGrid.class,Events.ON_SCROLLING,CE_IMPORTANT); addClientEvent(BaseGrid.class,Events.ON_SCROLL,CE_IMPORTANT);
但仍然无法正常工作。它该怎么办?
答案 0 :(得分:1)
可以在JavaScript中在客户端监听滚动事件,如下所示:
<listbox xmlns:w="client" w:onScroll='console.log("scroll")' />
您可以应用zul中显示的客户端侦听器,或Java代码中的Component.setWidgetListener()
。
在该客户端监听器中,您可以send a custom event to the server side:
<listbox rows="2" xmlns:w="client"
w:onScroll='zAu.send(new zk.Event(this, "onClientScroll", {data: "I scrolled!"}, {toServer:true}));'
onClientScroll='System.out.println(event.getData())'>
这将在服务器端输出{"data":"I scrolled!"}
。但请注意:滚动事件经常被抛出。您可能希望延迟事件发送一点来限制流量。