【问题标题】:Preventing click event on disabled tree node in angular custom directive template防止在角度自定义指令模板中禁用树节点上的单击事件
【发布时间】:2017-01-14 06:55:34
【问题描述】:

我有一个自定义的角树组件,在浏览器中看起来像这样:

+ Parent 1
   + Child 1-A
      - Child 1-A-A
      - Child 1-A-B
      - Child 1-A-C
   + Child 1-B
   + Child 1-C

指令模板如下所示:

<ul >
   <ers-tree-item ng-if="ctrl.parentItem"
               ng-repeat="item in ctrl.parentItem.children"
               item="item"
               parent="ctrl"
               level="ctrl.level"
               collapse-icon="ctrl.collapseIcon"
               expand-icon="ctrl.expandIcon"
               item-renderer="ctrl.itemRenderer"
               item-loader="ctrl.itemLoader"
               lazy-options="ctrl.lazyOptions"
               ng-disabled="ctrl.disabled"
        >
   </ers-tree-item>
</ul>

ers-tree-item 指令在列表中创建每个“li”元素,因此上面树中提到的每个父子节点基本上都是从下面的模板创建的:

 <!-- ers-tree-item directive -->
<li draggable="{{treeController.treeDraggable && !item.data.disabled && !disabled}}">
  <a href="javascript:void(0);"
    tabindex="0"
    draggable="false"
    ng-class="{'selected': item.selected}"
    ng-click="onItemClick()"
    ng-disabled="item.data.disabled || disabled">

     // within this element there is just the "+" or "-" icon
     // as well as the label for each tree item (i.e. Parent 1)
  </a>
</li>

如何仅在设置为禁用的 li 元素上禁用单击事件。因此,如果树节点被禁用(例如 Child 1-A),我想删除该节点上的单击事件,所以不能拖吗?基本上每个树节点都相同,我无法弄清楚如何仅在那些被禁用的节点上禁用点击事件......

我目前可以在禁用的元素上禁用拖动,但我遇到的问题是,如果它的一个被禁用的子节点试图被拖动,它会拖动整个“ul”元素。所以我认为只是禁用点击禁用的树节点可能是最好的..

【问题讨论】:

    标签: javascript jquery html css angularjs


    【解决方案1】:

    你可以使用一些 css :

    input.myClass.disabled {
        pointer-events : none;
    }
    

    【讨论】:

    • 这仍然会冒泡到父 li 项目并拖动整个列表
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    相关资源
    最近更新 更多