我创建了angular js指令以在<select>
标签中应用select2。我要在select2
应用于元素后触发更改事件。我正在使用select2的标签。在select中添加新标签后,我想触发更改事件。但是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);
}
}
});
我想在select2事件触发后调用onChange函数。