【问题标题】:Angular ng-click for drodpdown option tagAngular ng-click 用于下拉选项标签
【发布时间】:2016-05-04 07:28:39
【问题描述】:

这是一个 jsfiddle。 http://jsfiddle.net/cuycbxxp/

我在这里有一个下拉选择,用于 2. 名称和数字。

选择名称,然后选择数字。一旦为数字选择了下拉列表,执行函数就会被执行并在控制台上显示输出。

这可能看起来工作正常。但打开控制台并单击下拉菜单。 execute 函数在我们选择下拉选项之前执行。

如何确保只有当用户点击选项标签之一时才执行执行功能?

标记:

<div ng-controller="MyCtrl">
    <div>
        <label>Names:</label>
        <select ng-model="params.name">
            <option value="pa">Taeo</option>
            <option value="ws">Wers</option>
            <option value="pn">Petin</option>
        </select>
        <br>
        <label>Numbers:</label>
        <select ng-click="execute()">
            <option value="22">22</option>
            <option value="33">33</option>
        </select>
    </div>
</div>

【问题讨论】:

  • ng-click 将在您单击具有该装饰器的任何元素时触发,而不是选项。我认为 ng-change 在你的情况下可能是一个更好的指令?
  • @thsorens- 你想把它作为答案吗?我看到其他人已经回答了,但你先做了。多谢你们。我现在对 ng-click 和 ng-change 的理解要好一些。
  • 我现在发布了我的答案。

标签: javascript html angularjs angularjs-ng-click


【解决方案1】:

ng-click 将在您单击具有该装饰器的任何元素时触发,而不是选项。我认为 ng-change 在你的情况下可能是一个更好的指令。

【讨论】:

    【解决方案2】:

    &lt;select ng-click="execute()"&gt; 更改为&lt;select ng-change="execute()"&gt;

    ng-click 会在您单击对象(在本例中为下拉菜单)时执行。 ng-change 在表单元素更改时执行,即用户更改下拉项时。

    【讨论】:

      【解决方案3】:

      您需要使用角度 ng-change (ngChange)。

      使用

      ng-change="execute()"
      

      而不是

      ng-click="execute()"
      

      文档参考 ng-change: https://docs.angularjs.org/api/ng/directive/ngChange

      文档参考 ng-click: https://docs.angularjs.org/api/ngTouch/directive/ngClick

      由于您使用 ng-click,所以 click 事件会在您单击选择框时触发。但是如果你使用 ng-change,change 事件会在选择框的值根据选项选择发生变化时触发,因此 execute() 会触发。

      【讨论】:

        猜你喜欢
        • 2023-03-12
        • 2018-05-09
        • 2014-10-12
        • 1970-01-01
        • 1970-01-01
        • 2019-01-24
        • 1970-01-01
        • 2013-12-15
        • 1970-01-01
        相关资源
        最近更新 更多