1

我正在尝试使 select2 与我的 ajax 加载的带有嵌套属性的 json 数据一起工作。我想得到这样的东西http://ivaynberg.github.io/select2/#multi

示例 json:

[{
  id: 1,
  name: "GroupName",
  users: [{id: 1, name: 'UserName'}, {id: 2, name: 'SecondUser}]
 }]

在他们使用<optgroup label="GroupName"><option value="1">UserName</opyion></optgroup>并获得正确结果的网站上。

在我的情况下,它正确显示嵌套,但我只能选择GroupName,但我需要选择嵌套userName并使其GrouoName不可选择,仅用于信息目的。

代码:

$('#user_tokens').select2({
  placeholder: "Search for a user",
  minimumInputLength: 0,
  tags: true,
  multiple: true,
  ajax: {
    url: "messages/users_data.json",
    dataType: 'json',
    quietMillis: 100,
    data:  function(search, page) {
      return {
        q: search,
        per: 3,
        page: page
      };
    },
    results: function(data, page) {
      return { 
        results: data,
         };
    }
  },
  formatResult: formatResult,
  formatSelection: formatSelection,
  dropdownCssClass: "bigdrop"
});

格式结果:

   var formatUserResult = function(data) {
     var optgroup = "";
     var users = "";
       if (data.name !== undefined) {
         data.users.forEach(function(e) {
           users += "<li class='select2-results-dept-1 select2-result select2-result-    selectable'>" + 
           "<div class='select2-result-label'>" +
             "<span class='select2-match'></span>"+
             e.firstname +
           "</div>" +
         "</li>";
         });
         optgroup += "<div class='select2-result-label'>" + 
         "<span class='select2-match'></span>" + 
         data.name + "</div>" +
         '<ul class="select2-result-sub">' + users + '</ul>';
       }
       return optgroup;
     }

问题是 optgroup 必须class: 'select2-result-unselectable' 不知道如何处理它。

4

0 回答 0