【问题标题】:AngularJS ng-click on li iconAngularJS ng-点击 li 图标
【发布时间】:2014-04-29 19:57:52
【问题描述】:

我有这个代码

<div  ng-repeat="names in mitypes  = (mitype | filter:{parentid:0}:true)"> 

    <li ng-click="newObject[names.id]=!newObject[names.id]">
      <label ng-click="selectedlist[names.id]=!selectedlist[names.id]">{{names.id}}  </label>
    </li>

    </div>
   </div>

它的 ul li 元素树。所以我想要有 2 次点击事件: 1. 点击 li ng-click 打开/关闭树分支 2. 点击标签 ng-click 选择树节点

li 元素具有 css 样式:

li {
  list-style-type: none; 
  background-repeat: no-repeat;
  background-position: left center;
}
li.closed
{
  background-image: url(1.png);
}
li.opend
{
  background-image: url(2.png);
}

我想点击 png 图像打开/关闭和标签选择节点。 现在,当您单击“li”的任何部分时,两个变量的含义都会改变。

如何拆分这些事件? 提前谢谢...

【问题讨论】:

    标签: html css angularjs angularjs-ng-click


    【解决方案1】:

    这是浏览器中的标准事件传播行为。

    在您的&lt;label&gt; 上尝试$event.stopPropagation

    <label ng-click="selectedlist[names.id]=!selectedlist[names.id]; $event.stopPropagation()">{{names.id}}  </label>
    

    如果要在数字左键时打开,在&lt;li&gt;中添加padding-left:

    li {
     list-style-type: none; 
     background-repeat: no-repeat;
     background-position: left center;
     border: 1px solid white;
     border-radius:5px;
     background-color:lightblue;
     padding-left: 30px; //add padding
    }
    

    DEMO

    【讨论】:

    • 非常感谢。所以我的标签 padding-left: 30px;但不是我只有 1 点击标签。我如何才能第二次点击 li?
    • @user3449258:对不起,我不明白。你能详细说明一下吗?这是你想要的吗:How can I split these events?
    • @user3449258:我不确定我是否理解正确。如果您想让点击&lt;li&gt; 变得容易,请将您的&lt;li&gt; 放大或添加填充。
    • 对不起,我的英语很差=(
    • @user3449258:我看了你的废话。但是单击标签并单击左侧填充会触发相同的功能,因为它是相同的元素。将您的padding-left: 30px; 移动到li 将工作plnkr.co/edit/yae9hyGm5ZHZdcBvvEd5?p=preview
    猜你喜欢
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多