Как вызвать событие изменения после выбора новой добавленной опции из тега выбора, используя 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.