Публикация примера, созданного мною, в качестве ответа, потому что он, похоже, помог ОП.
Совет здесь состоит в том, чтобы не смешивать использование Selectize с ng-model
и ng-options
, потому что они конфликтуют друг с другом по функциональности при применении к одному и тому же элементу select
.
Если вы хотите использовать Selectize, лучше всего создать оболочку (т.е. директиву, как в моем примере), которая обеспечивает инициализацию select
элементов, которые в этом нуждаются.
Кроме того, не забывайте, что, поскольку Selectize вызывает изменения данных вне контекста AngularJS, вам необходимо вручную запускать дайджесты (т. Е. scope.$apply()
), чтобы код внутри AngularJS видел последние данные.
angular
.module('app', [])
.controller('ctrl', function ($scope) {
$scope.items = [
{ storedArray: ['078...'] },
{ storedArray: [] },
{ storedArray: ['0cc...'] },
];
$scope.skills = [
{ skillId: '078...', skillName: 'Java' },
{ skillId: '0cc...', skillName: 'Cisco UCS' },
];
$scope.itemSelectizeOptions = $scope.items.map(function (item) {
return {
valueField: 'skillId',
labelField: 'skillName',
options: $scope.skills,
items: item.storedArray,
onChange: function (newItems) {
item.storedArray = newItems;
// `$apply()` needed because change occurs outside of AngularJS's knowledge
$scope.$apply();
}
};
})
})
.directive('selectize', function () {
return {
scope: {
selectize: '<',
},
link: function (scope, el) {
var selectize = $(el).selectize(scope.selectize);
},
};
});
{{ items | json }}