Angular-ui select2标签的官方示例是:
myAppModule.controller('MyController', function($scope) {
$scope.list_of_string = ['tag1', 'tag2']
$scope.select2Options = {
'multiple': true,
'simple_tags': true,
'tags': ['tag1', 'tag2', 'tag3', 'tag4'] // Can be empty list.
};
});
我有这段代码:
$scope.select2Options = {
'multiple': true,
'simple_tags': true,
'tags': $scope.categoryNames
};
$scope.$watch(function () { return adminCrudService.getCategoriesForUpdate(); }, function () {
$scope.action = "edit";
$scope.categoriesForUpdate = adminCrudService.getCategoriesForUpdate();
if ($scope.categoriesForUpdate.length > null) {
$scope.categoryNames = [];
_.forEach($scope.categoriesForUpdate, function (item) {
$scope.categoryNames.push(item._backingStore.Name);
});
}
});
但这不起作用,当我点击Selcet2时,我得到找不到匹配项并且我在$ watch中记录了 $ scope.categoryNames ,并且数据是存在的(这部分工作正常)。
所以我的问题是可以动态加载标签,如果可以,怎么做?
答案 0 :(得分:9)
我最近在使用AngularUI Select2项目时遇到了这个问题,并通过使tags参数成为返回模型的函数来解决它。例如:
$scope.select2Options = {
multiple: true,
simple_tags: true,
tags: function () {
return $scope.categoryNames;
}
};
$scope.categoryNames
的任何更新都会反映在视图中,因为Select2会在打开时和每次按键时调用tags
函数。
希望这对想要使用Select2而不是选择的人有用。
答案 1 :(得分:0)
好吧,我无法让它工作,所以我决定使用Chosen,遵循这个很棒的教程:link,我得到了我想要的结果。