Angularjs: Ui-select ng-click в ui-select-choices

Я пытаюсь использовать кнопку добавления внутри параметров, но проблема в том, что ng-click срабатывает, но параметр не выбран.

<ui-select ng-model="datactrl.newservice.selected" theme="selectize" ng-disabled="disabled" style="width: 100%;">
    <ui-select-match placeholder="...">
        <span ng-bind-html="$select.selected.name"></span>          
    </ui-select-match>
    <ui-select-choices repeat="service in data.base_services | filter: $select.search">
        <span ng-bind-html="service.name | highlight: $select.search"></span>

        <!-- HERE NOT -->
        <a href="" class="pull-right" ng-click="setnewservice()">
            <i class="glyphicon glyphicon-plus-sign"></i>
        </a>    
        <!-- ### -->

    </ui-select-choices>
</ui-select>                            


<!-- here obviously works -->
<a href="" class="pull-right" ng-click="setnewservice()">
    <i class="glyphicon glyphicon-plus-sign"></i>
</a>

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

но как я могу правильно обработать это, остановить событие, выбрать вариант без отправки объекта или некоторых его атрибутов, а затем сделать все остальное?

$scope.setnewservice = function ($event) {
    $event.stopPropagation();
    // ??
}

person daniel    schedule 16.04.2015    source источник
comment
У меня аналогичная настройка: установка ng-click в качестве атрибута us-select-choices одновременно выбирает элемент и вызывает метод   -  person Samantha Catania    schedule 03.09.2015


Ответы (2)


Используйте ng-change для ui-select, а не ng-click для ui-select-choices. Измените это:

ng-click="setnewservice()

to:

ui-select ng-model="datactrl.newservice.selected" theme="selectize" ng-disabled="disabled" style="width: 100%;" ng-change="setnewservice()>
person Fergus    schedule 09.05.2016
comment
Я бы рекомендовал использовать on-select против ng-change, особенно если у вас есть тип впереди, иначе он будет срабатывать для каждого символа, введенного в поле выбора. - person dwp4ge; 03.12.2017
comment
Конечно, если вы хотите использовать JavaScript, когда выделен какой-либо текст. Но это было не то, о чем спрашивал @daniel. Директива ngChange более актуальна. Выражение вычисляется немедленно, в отличие от события JavaScript, которое запускается только в конце изменения. Это необходимо для работы ui-select-choices. embed.plnkr.co/Ufhb0IfzrTlG3XLY2ahh - person Fergus; 03.12.2017

Вы можете добавить атрибут on-select к своему тегу следующим образом:

on-select="setnewservice($item, $model)"
person dwp4ge    schedule 21.06.2016