2016-11-02 96 views
1

我使用选择二如下:如何在Select2中从数据源设置数据*?

$('select#fields').select2({ 
    placeholder: 'Select a field', 
    data: data.fields 
}); 

data.fields是这样一个JSON:

"fields": [ 
    { 
    "id": "companies_id", 
    "text": "companies_id", 
    "data-type": "int" 
    }, 
    { 
    "id": "parent_companies_id", 
    "text": "parent_companies_id", 
    "data-type": "int" 
    }, 
    { 
    "id": "client_of_companies_id", 
    "text": "client_of_companies_id", 
    "data-type": "int" 
    }, 
    { 
    "id": "asset_locations_id", 
    "text": "asset_locations_id", 
    "data-type": "int" 
    }, 
    { 
    "id": "companies_name", 
    "text": "companies_name", 
    "data-type": "varchar" 
    }, 
    { 
    "id": "companies_number", 
    "text": "companies_number", 
    "data-type": "varchar" 
    } 
] 

idtext用于填充选项值,我可以使用第三值data-type和将它设置为<option>的属性?如果是这样如何?任何可以给我一个例子吗?

+0

可能会尝试与[模板]的东西(https://select2.github.io /examples.html#templating)。 –

+0

@lamelemon,实际上这里不需要模板。你可以检查我的答案:) – Dekel

回答

1

其实 - 选择2默认保存所有在<option>元素的data('data')变量的属性,它创造的,你可以随时使用$(<option>).data('data')访问这些值,但请记住,它不是一样.data('type')data-type="value"。您需要使用属性的完整名称。

下面是如何获得select事件的data-type价值的例子:

var $example = $("#s1").select2({ 
 
    data: [ 
 
     { 
 
      "id": "companies_id", 
 
      "text": "companies_id", 
 
      "data-type": "int", 
 
      "data-extra": '1' 
 
     }, 
 
     { 
 
      "id": "parent_companies_id", 
 
      "text": "parent_companies_id", 
 
      "data-type": "int", 
 
      "data-extra": '2' 
 
     }, 
 
     { 
 
      "id": "client_of_companies_id", 
 
      "text": "client_of_companies_id", 
 
      "data-type": "int", 
 
      "data-extra": '3' 
 
     }, 
 
     { 
 
      "id": "asset_locations_id", 
 
      "text": "asset_locations_id", 
 
      "data-type": "int", 
 
      "data-extra": '4' 
 
     }, 
 
     { 
 
      "id": "companies_name", 
 
      "text": "companies_name", 
 
      "data-type": "varchar", 
 
      "data-extra": '5' 
 
     }, 
 
     { 
 
      "id": "companies_number", 
 
      "text": "companies_number", 
 
      "data-type": "varchar", 
 
      "data-extra": '6' 
 
     } 
 
    ], 
 
}).on('select2:select', function(e) { 
 
    console.log(e.params.data['data-type'], e.params.data['data-extra']); 
 
});
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" /> 
 
<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.0.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.js"></script> 
 
<select id="s1"> 
 
</select>

+0

@ReynierPM,谢谢你接受答案。投票也将不胜感激。 – Dekel

+0

我已经投票了;)虽然这比我更复杂,但我会开一个新的话题,希望你能帮助我以及 – ReynierPM

+0

发布到新主题的链接 – Dekel