通过 require.js 加载时,ngDraggable 不适用于触摸
ngDraggable doesn't work with touch when loaded through require.js
我正在开发一个小型 angular 应用程序,它需要拖放并且需要使用触摸。
我找到了 ngDraggable,它看起来非常像我需要的。
问题是,由于事物的框架(长话短说),我不得不使用 require.js 加载我的依赖项。我还需要使用路由和视图。
我修改了 require.config.js 以包含 ngDraggable,如下所示:
paths: {
'angular': requirejs.cardBaseLibBaseUrl + 'angular/angular',
'angular-route': requirejs.cardBaseLibBaseUrl + 'angular-route/angular-route',
// other things
'ngDraggable': requirejs.cardBaseLibBaseUrl + 'ngDraggable-master/ngDraggable'
},
shim: {
'angular' : {
deps: ['jquery'],
'exports' : 'angular'
},
'angular-route': ['angular'],
// other things
'ngDraggable' : {
deps: ['angular']
}
最终使用ngDraggable的div长这样:
<div class="shelf">
<table>
<tr>
<td ng-repeat="obj in draggableObjects">
<div class="slot" ng-drop="true" ng-drop-success="onDropComplete($index, $data, $event)">
<table id="card-table">
<tr>{{obj.description}}</tr>
<tr>
<div class="card" ng-class="{'selected': obj.mit_card.selected}" ng-drag="true" ng-drag-data="obj" ng-hide="obj.mit_card==null"
ng-click="onCardSelected(obj)">
<table>
<tr>
<!-- <td class="vertical-text">{{obj.mit_card.description}}</td>-->
<label class="vertical-text">{{obj.mit_card.spec_id}}</label>
</tr>
</table>
</div>
</tr>
</table>
</div>
</td>
</tr>
</table>
<div class="remove-zone" ng-drop="true" ng-drop-success="onRemoveDropComplete($data, $event)">Drag here to remove card</div>
</div>
在 Chrome PC 上一切正常,但是当我在 Android 上尝试时,我无法触摸拖动。
ngDraggable 附带的示例与触摸拖动一起使用,但它们将 ngDraggable.js 直接加载到 html 中,并且一切都在那里使用。
对正在发生的事情有什么想法吗?
编辑:我放了一个 test repository 。在 ngDraggable-master 中,example-.html 是原始示例,它们与触摸一起工作。 index.html 是我用 requireJS 重新解释 example-reorder.html 的切入点。它可以与鼠标一起使用,但触摸是不行的。
看起来问题确实出在 ngDraggable 上。 GitHub 上的最新版本似乎解决了它。
我正在开发一个小型 angular 应用程序,它需要拖放并且需要使用触摸。
我找到了 ngDraggable,它看起来非常像我需要的。
问题是,由于事物的框架(长话短说),我不得不使用 require.js 加载我的依赖项。我还需要使用路由和视图。
我修改了 require.config.js 以包含 ngDraggable,如下所示:
paths: {
'angular': requirejs.cardBaseLibBaseUrl + 'angular/angular',
'angular-route': requirejs.cardBaseLibBaseUrl + 'angular-route/angular-route',
// other things
'ngDraggable': requirejs.cardBaseLibBaseUrl + 'ngDraggable-master/ngDraggable'
},
shim: {
'angular' : {
deps: ['jquery'],
'exports' : 'angular'
},
'angular-route': ['angular'],
// other things
'ngDraggable' : {
deps: ['angular']
}
最终使用ngDraggable的div长这样:
<div class="shelf">
<table>
<tr>
<td ng-repeat="obj in draggableObjects">
<div class="slot" ng-drop="true" ng-drop-success="onDropComplete($index, $data, $event)">
<table id="card-table">
<tr>{{obj.description}}</tr>
<tr>
<div class="card" ng-class="{'selected': obj.mit_card.selected}" ng-drag="true" ng-drag-data="obj" ng-hide="obj.mit_card==null"
ng-click="onCardSelected(obj)">
<table>
<tr>
<!-- <td class="vertical-text">{{obj.mit_card.description}}</td>-->
<label class="vertical-text">{{obj.mit_card.spec_id}}</label>
</tr>
</table>
</div>
</tr>
</table>
</div>
</td>
</tr>
</table>
<div class="remove-zone" ng-drop="true" ng-drop-success="onRemoveDropComplete($data, $event)">Drag here to remove card</div>
</div>
在 Chrome PC 上一切正常,但是当我在 Android 上尝试时,我无法触摸拖动。
ngDraggable 附带的示例与触摸拖动一起使用,但它们将 ngDraggable.js 直接加载到 html 中,并且一切都在那里使用。
对正在发生的事情有什么想法吗?
编辑:我放了一个 test repository 。在 ngDraggable-master 中,example-.html 是原始示例,它们与触摸一起工作。 index.html 是我用 requireJS 重新解释 example-reorder.html 的切入点。它可以与鼠标一起使用,但触摸是不行的。
看起来问题确实出在 ngDraggable 上。 GitHub 上的最新版本似乎解决了它。