Как вызвать событие изменения после выбора новой добавленной опции из тега выбора, используя select2 в angularjs? - PullRequest
0 голосов
/ 18 мая 2019

Как вызвать событие изменения после выбора новой добавленной опции из тега выбора, используя select2 в angularjs?

Я создал директиву угловых js для применения select2 в теге <select>.Я хочу вызвать событие изменения после применения select2 к элементу.Я использую маркировку select2.После добавления нового тега в select я хочу вызвать событие change.Но ng-change событие запускается первым после этого select2:select события.Поэтому я не могу получить значение ng-model после выбора новой добавленной опции.Пожалуйста, помогите мне решить эту проблему.

Я использовал jquery 3.2.1 , select2 4.0.2 , угловой js 1.7.8 .

Я пытался использовать следующий код:

<select custom-select2 id="items" ng-model="items" class="form-control"
        ng-change="onChange(items)">
    <option ng-repeat="item in itemlist" value="{{ item.id }}">
      {{ item.name }}
    </option>   
</select>
 let app= angular.module("app",[]);
 app.controller('itemAddController',function($scope, $http){
    $scope.itemlist= {};      
    $scope.onChange = (items) => {
      console.log(items)
    }     
 });
app.directive('customSelect2', function($timeout) {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function(scope, element, attr, ngModel) {
            $timeout( function(){
                element.select2({
                    allowClear:true,
                    tags: true,
                    tokenSeparators: [",",";"],
                    createTag: function (params) {
                        let obj = {};
                        let term = $.trim(params.term);
                        if (term === '') {
                            return null;
                        }
                        obj = {
                          id: term,
                          text: term,
                          newTag: true // add additional parameters
                        };
                        return obj;
                    }
                }).on("select2:select", function(e) {
                    if(e.params.data.newTag){
                        scope.itemlist.push(e.params.data.text)
                        ngModel.$setViewValue(e.params.data.text);
                    }
                });
            },200);

        }
    }
});

Я хочу вызвать функцию onChange после запуска события select2.

...