Angular ng-click для тега параметра drodpdown

Вот 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>

person Patrick    schedule 03.05.2016    source источник
comment
ng-click срабатывает, когда вы щелкаете по любому элементу с помощью этого декоратора, а не опции. Я думаю, что ng-change, вероятно, будет лучшей директивой в вашем случае?   -  person thsorens    schedule 04.05.2016
comment
@thsorens- wld ты хочешь сказать это как ответ? Я вижу, что другие ответили на него, но ты сделал это первым. Спасибо ребята. мое понимание теперь немного лучше с ng-click и ng-change.   -  person Patrick    schedule 04.05.2016
comment
Я опубликовал свой ответ сейчас.   -  person thsorens    schedule 04.05.2016


Ответы (3)


ng-click срабатывает, когда вы щелкаете по любому элементу с помощью этого декоратора, а не опции. Я думаю, что ng-change, вероятно, будет лучшей директивой в вашем случае.

person thsorens    schedule 03.05.2016

Изменить <select ng-click="execute()"> на <select ng-change="execute()">

ng-click запускается всякий раз, когда вы нажимаете на объект (в данном случае на раскрывающийся список). ng-change выполняется при изменении элемента формы, то есть всякий раз, когда пользователь изменяет элемент раскрывающегося списка.

person Dr. Cool    schedule 03.05.2016

Вам нужно использовать angular 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, событие изменения сработает, когда значение поля выбора изменится на основе выбора параметра, поэтому будет срабатывать execute().

person Syed Ekram Uddin    schedule 03.05.2016