我尝试使用Select2.js版本4.0来创建标记选择。我想要一个新的标签,如果它没有退出,我希望使用'data-html'
标签格式化结果。
问题是两个元素(createTag
和templateResult
)独立工作,但当我一起使用时,当用户在搜索框中输入时,自动完成选项不再显示。
我做错了什么,或者这是Select2的限制?
的application.js
$("#taglist").select2({
tokenSeparators: [',', ' '],
tags: true,
createTag: function (tag) {
// Case insensitive search for tag
tagExists = false;
$("#taglist option").each(function() {
if ($.trim(tag.term).toUpperCase() == $.trim($(this).text()).toUpperCase()) {
tagExists = true;
}
});
// If the tag does not exist create it
if (!tagExists) {
return {
id: tag.term,
text: tag.term + " (create)",
isNew: true
};
}
},
templateResult: function (choice) {
if (!choice.id) { return choice.text; }
var $choice = $(
'<span><a>' + data.element.getAttribute('data-html') + '</a></span>'
);
return $choice;
}
});
答案 0 :(得分:0)
标记时没有.controller('EditProjectCtrl', function () {
var editProject = this;
editProject.options = [
{'type': 'Fruits'},
{'type': 'Vegetables'},
{'type': 'Desserts'}
];
editProject.snacks = function() {
if(editProject.project.type == 'Fruits') {return [
'Grapes',
'Oranges',
'Apples',
]}
if(editProject.project.type == 'Vegetables') {return [
'Broccoli',
'Spinache',
'Kale',
]}
else {return [
'Cookies',
'Cake',
'Pie']}
};
,因此您的模板方法需要能够处理。理想情况下,您的方法应该能够使用data.element
,其他任何内容都是可选的。
如果元素的data.text
属性中没有任何内容,那么您应该回到data.text
。