有没有办法在ken​​do移动列表视图上允许鼠标滚动?

时间:2013-03-21 15:19:50

标签: kendo-ui kendo-mobile

我注意到在列表视图的移动页面上“滚动”的唯一方法是单击并拖动。

对于在桌面上使用移动网站的人们,有没有办法允许使用鼠标滚轮进行正常滚动?

1 个答案:

答案 0 :(得分:2)

以下是使用kendo mobile和jquery.mousewheel.js的解决方法,使用Web应用程序上的鼠标滚轮滚动移动视图。

观点:

<div data-role="view" id="tabstrip-editor" data-init="attachToScroller">
<ul data-role="listview" data-style="inset" data-type="group">
    <li>item 1</li>
    <li>item 2</li>
</ul></div>

Javascript:

function matrixToArray(matrix) {
    return matrix.substr(7, matrix.length - 8).split(', ');
}

function attachToScroller(e) {
    var scroller = e.view.scroller;

    e.view.scroller.element.find('.km-scroll-container').mousewheel(function (event, delta, deltaX, deltaY) {
        event.preventDefault();
        var matrix = matrixToArray($(event.currentTarget).css("-webkit-transform"));
        var currentScroll = parseInt(matrix[5], 10);
        var scrollingamount = currentScroll + deltaY * 15;
        if (deltaY > 0) {            
            if (-currentScroll > 9)
                scroller.scrollTo(0, scrollingamount);
            else
                scroller.scrollTo(0, 0);
        }
        else {
            var maximum = scroller.scrollHeight() - $(scroller.element).height();
            if(maximum + currentScroll > 0)
                scroller.scrollTo(0, scrollingamount);
            else
                scroller.scrollTo(0, -maximum);
        }
    });
}

Fiddle Demo Here(适用于Chrome)

Fiddle Demo with Modernizr(也适用于其他浏览器)

在视图初始化期间,我们将滚动条容器附加到jquery.mousewheel事件。 当jquery.mousewheel事件到来时,我们必须获取滚动容器的-transform css属性以了解当前的Y转换(kendo移动卷轴使用-transform定位自身)。之后,我们调用scrolller的scrollTo方法根据鼠标滚轮的delta属性向上或向下滚动。