Ручка MouseScroll в ZK - PullRequest
       27

Ручка MouseScroll в ZK

0 голосов
/ 06 февраля 2012

Я хочу обработать событие MOUSE scroll в zk, но не могу его найти.Я могу сделать это с помощью Java Script, но я хочу отправить уведомление на сторону сервера, чтобы сервер мог отправлять данные обратно клиенту.Есть ли способ получить это событие в контроллере.или

comp.addEventListener(EVENTNAME,mylistener);

Я хочу знать, какое должно быть значение EVENTNAME выше.

Спасибо, Аман

Ответы [ 2 ]

3 голосов
/ 24 декабря 2013

Насколько я мог найти, событие ON_SCROLL будет работать, только если у элемента есть полоса прокрутки;Если вы хотите захватить событие mousewheel, вам нужно сделать это в javascript и создать собственное событие.

Вот что я сделал, чтобы захватить прокрутку мыши в сетке подкачки, чтобы перемещать страницы с помощью колесика мыши;часть, которая отправляет уведомление на серверную сторону, имеет следующую строку: this.getPaginal (). fire ('onPaging', nextPage)

<zk>
<zscript>Object[] o = new String[150];

</zscript>
<hlayout id="layout" vflex="1" hflex="1">
    <grid id="grid1" width="300px" autopaging="true" height="300px"  mold="paging" vflex="true">
        <rows>
            <row forEach="${o }">
                <label value="item ${forEachStatus.index}"/>
            </row>
        </rows>
    </grid>
</hlayout>
<zscript><![CDATA[

  {
    grid1.setWidgetOverride("bind_", "function(){\r\n"+
      "this.$supers('bind_', arguments);\r\n"+
      "var node = this.$n();\r\n"+
      "if (node.addEventListener)\r\n"+ 
      "    node.addEventListener('DOMMouseScroll', this.proxy(this.onMouseWheel), false);\r\n"+
      "node.onmousewheel = this.proxy(this.onMouseWheel);\r\n"+
      "}");

    grid1.setWidgetOverride("onMouseWheel", 
     "function(event){\r\n" + 
      "    var delta = 0;\r\n" + 
      "    if (!event) /* For IE. */ \r\n" + 
      "        event = window.event;\r\n" + 
      "    if (event.wheelDelta) { /* IE/Opera. */\r\n" + 
      "        delta = event.wheelDelta / 120;\r\n" + 
      "        if (window.opera) \r\n" + 
      "            delta = -delta;\r\n" + 
      "    }\r\n" + 
      "    else \r\n" + 
      "        if (event.detail) {\r\n" + 
      "            delta = -event.detail / 3;\r\n" + 
      "        }\r\n" + 
      "    if (delta) {\r\n" + 
      "        console.log('delta = ' + delta); " +
      "        var currPage = this.getPaginal().getActivePage(); \r\n" +
      "        var nextPage =  Math.min (this.getPageCount() - 1, Math.max (0, currPage - delta)); \r\n" +
      "        this.getPaginal().fire('onPaging', nextPage);\r\n" +
      "    }\r\n" + 
      "    if (event.preventDefault) \r\n" + 
      "        event.preventDefault();\r\n" + 
      "    event.returnValue = false;\r\n" + 
      "}    ");
  }




    ]]></zscript>

0 голосов
/ 24 февраля 2012

Попробуйте org.zkoss.zk.ui.event.Events.ON_SCROLL или org.zkoss.zk.ui.event.Events.ON_SCROLLING.

...