标记时,Select2模板不会自动完成

时间:2015-09-27 02:39:04

标签: javascript jquery html jquery-select2 jquery-select2-4

我尝试使用Select2.js版本4.0来创建标记选择。我想要一个新的标签,如果它没有退出,我希望使用'data-html'标签格式化结果。

问题是两个元素(createTagtemplateResult)独立工作,但当我一起使用时,当用户在搜索框中输入时,自动完成选项不再显示。

我做错了什么,或者这是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;
    }
  });

1 个答案:

答案 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