javascript - 使用 ng-sortable 禁用页面滚动

标签 javascript angularjs ng-sortable

我正在用 AngularJS 创建一个可排序列表和一个 Angular 库 ng-sortable .我遇到的问题是在移动设备上行为不一致。在 android (chrome) 上触摸和移动列表时页面不会滚动(这是所需的行为),但在 ipad (chrome) 上会滚动

我在 jsFiddle 中创建了一个简单示例, 用一个基本的例子

JavaScript:

var myApp = angular.module('myApp',['ui.sortable']);

myApp.controller('MyCtrl', function($scope) {
    $scope.items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19];

    $scope.sortableOptions = {
      orderChanged: function (event) {
        console.log("event", event);
      }
    };
});

HTML:

<div ng-controller="MyCtrl">
<ul as-sortable="sortableOptions" ng-model="items">
    <li class="display-item" as-sortable-item ng-repeat="item in items">
        <div class="handle" >
            <div class="item-handle" as-sortable-item-handle>
                {{item}}
            </div>
            <div class="content">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</div>
        </div>
    </li>
</ul>

CSS:

.display-item {
    clear: both;    
}

.handle {
    border: 1px solid #e5e5e5;
    padding: 10px;
    margin: 0px;
}

.item-handle {
    background: grey;
    float:left;
    padding: 2px 5px;
}

/* ************************************** */
/* Mandatory CSS required for ng-sortable */
/* ************************************** */

.as-sortable-item, .as-sortable-placeholder {
    display: block;
}

.as-sortable-placeholder {

    background: pink;
}

.as-sortable-item {
    -ms-touch-action: none;
    touch-action: none;
}

.as-sortable-item-handle {
    cursor: move;
}

.as-sortable-placeholder {
}

.as-sortable-drag {
    position: absolute;
    pointer-events: none;
    z-index: 9999;
}

.as-sortable-hidden {
    display: none !important;
}

最佳答案

同样的问题已经记录在 ng-sortable 网站上 right here

还有一个 longTouch/longTouchActive(old versions <= 1.3.2) 选项,您可以将其设置为 true;设置为 true 将导致拖放功能在触摸设备上的长触摸(即触摸并按住)时被激活。

如果这对 ipad、android chrome 等有帮助,请告诉我。

关于javascript - 使用 ng-sortable 禁用页面滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26889663/

相关文章:

javascript - AngularJS 如何将数据从子 Controller 发送到父 Controller ?

javascript - 如何从具有键/值对对象的数组中获取值?

javascript - Youtube API 未捕获( promise )错误 : Request failed with status code 403

javascript - 在 angularjs 中如何将 ngModel 对象传递给另一个 View ?

javascript - 输入在 ng-sortable 容器中不可编辑

javascript - 在不使用 HTML 属性的情况下连接到 onClick 事件

javascript - 在 angularjs 中使用 wijmo 事件日历

angularjs - 无法使用 Protractor webdriver-manager

javascript - 在没有 ng-repeat 的情况下使用 ng-sortable

angularjs - 类型错误 : Cannot read property '0' of undefined -- ng-Sortable ( AngularJs )