我正在创建一个包含AngularJS和角度库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;
}
答案 0 :(得分:0)
ng-sortable网站上记录了同样的问题 right here
还有一个longTouch / longTouchActive(旧版本&lt; = 1.3.2)选项,您可以将其设置为true;设置为true将导致拖放功能在触摸设备上长按触摸即触摸并保持时激活。
如果这对ipads,android chrome等有帮助,请告诉我。
答案 1 :(得分:0)
用户更好地对表格进行排序,我认为更容易,并且我对其进行了测试并且工作正常,您可以按照此完整示例进行操作:Example
这是代码中添加表格排序的部分
function demoController(NgTableParams, simpleList) {
this.tableParams = new NgTableParams({
// initial sort order
sorting: { name: "asc" }
}, {
dataset: simpleList
});
}
但是不要使用 simpleList ,只需按照不带它的示例放置数据而不是simpleList,然后只需复制html,看看它是如何工作的,然后添加自定义 attrs < / strong>,我希望我已帮助过您,如果您还有其他问题可以回复此评论:P