拖动列表元素,其中拖动元素的唯一方法是通过内部元素

时间:2014-04-25 20:55:25

标签: angularjs drag-and-drop angular-ui

我有一排可排序的元素。我使用ui-sortable因为它与angularjs很好地配合。我希望排序图标(向上和向下箭头)是唯一可以启动其父元素拖动的元素。 这基本上就是我正在使用的

<ul ui-sortable="phoneSortableOptions" ng-model="lead.phoneList"> 
    <li ng-repeat="phone in lead.phoneList | orderBy: 'displayOrder'"> 
        <span class="contact-title" > Phone </span>
        <div class="contact-move-up-down button-move-up-down" ></div>
        <span> {{phone}} </span>
    </li>
</ul>

我唯一希望成为可拖动的部分是

<div class="contact-move-up-down button-move-up-down" ></div>

我阅读了文档,但没有找到一种方法只使一个元素可拖动。任何对此问题的见解都将非常感激。

另外,如果我没有弄错的话,ui-sortable使用jQuery的可排序。

1 个答案:

答案 0 :(得分:0)

有很多方法可以防止拖动对象,但对我有用的是

app.directive('preventDrag', function () {
    return {
        link: function (scope, element, attributes) {
            element.on('mousedown', (e) {
                e.stopPropagation();
            });
        }
    }
});

我希望更多的图书馆修复,但这不是太糟糕。

您也可以尝试

  • user-select:none; // CSS
  • onmousedown =&#34; return false;&#34;
  • ondragstart =&#34;返回false;&#34;