5

angular-ui-tree中,我正在寻找一种在可拖动节点内有链接的方法。

现在发生的事情是,当我单击节点内的链接时,它开始“按住”整个节点来拖动它。

我看到了这个答案Angular JS (angular-ui-tree) ng-click conflict vs drag start event,但它与我想要做的不同。在这个答案ng-click中绑定到节点,在我的情况下,我在节点内有多个链接。

下面是我的html:

    <div ui-tree="treeOptions" drag-delay="1000" id="tree-root">
      <ol ui-tree-nodes ng-model="filteredModules" data-nodrop>
        <li ng-repeat="module in filteredModules" ui-tree-node>
          <div ui-tree-handle ng-click="toggle(this)">
            <a class="btn btn-xs"><span class="glyphicon" ng-class="{'glyphicon-chevron-right': collapsed, 'glyphicon-chevron-down': !collapsed}"></span></a>
                {{module.name}}
          </div>
          <ol ui-tree-nodes ng-model="module.stages" data-nodrop ng-class="{hidden: collapsed}">
            <li ng-repeat="stage in module.stages" ui-tree-node>
              <div ui-tree-handle ng-click="toggle(this)">
                <a class="btn btn-xs"><span class="glyphicon" ng-class="{'glyphicon-chevron-right': collapsed, 'glyphicon-chevron-down': !collapsed}"></span></a>
                    {{stage.name}}
              </div>
              <div ui-tree-nodes ng-model="stage.cases" ng-class="{hidden: collapsed}">
                  <div ng-repeat="case in stage.cases" ui-tree-node>
                  <div ui-tree-handle>

                    <!-- HERE I HAVE TWO LINKS -->

                    <a href="/#/admin/cases/{{case._id}}">{{case.name}}</a>                       
                    <a href="/#/admin/cases/edit/{{case._id}}" class="pull-right btn btn-primary btn-xs"><span class="glyphicon glyphicon-edit"></span> Edit</a>                 
                  </div>
                  </div>
                </div>
            </li>
          </ol>
        </li>
      </ol>
    </div>

有没有办法在可拖动节点内有多个链接?

提前致谢

4

2 回答 2

5

将 no-drag 属性添加到链接中,如下所示:

<a data-nodrag href="/#/admin/cases/{{case._id}}">{{case.name}}</a>                       
<a data-nodrag href="/#/admin/cases/edit/{{case._id}}" class="pull-right btn btn-primary btn-xs"><span class="glyphicon glyphicon-edit"></span> Edit</a>
于 2015-03-24T19:33:13.740 回答
0

我遇到过同样的问题。这就是我修复它的方法:

a 在 angular-ui-tree.js 的第 602 行添加元素

eventElmTagName = eventElm.prop('tagName').toLowerCase();
if (eventElmTagName == 'input' ||
eventElmTagName == 'textarea' ||
eventElmTagName == 'button' ||
eventElmTagName == 'i' ||
eventElmTagName == 'a' ||  //this would ignore 'a' elements while dragging
eventElmTagName == 'select') { 
return;
}

仅供参考 - 您在span元素中使用字形图标。因此,如果您单击字形图标,您可能会遇到同样的问题。在上面的语句中添加span元素也可以解决这个问题。

于 2015-06-10T18:52:21.793 回答