最近在做一个项目,项目地址: https://github.com/wangyuanjun008/wyj-parent.git
使用bootstrap select2下拉框插件,ajax从后台加载数据,保存编辑后,不知道怎么为下拉框赋值,下拉框代码如下:

<label class="col-sm-1 control-label">使用状态:</label>
<select id="sel_status" name="status" class="col-sm-3 form-control select2"></select>

$("#sel_status").select2({
    placeholder : "--请选择--",
    dropdownParent : $("#myModal"),
    allowClear : true,
    width : 150,
    ajax : {
        url : '${ctx}/dataDict/getData?groupCode='+'yesOrNo',
        dataType : 'json',
        type : 'get',
        data: function (params) {
            return {
                q: params.term, // search term 请求参数
                page: params.page
            };
        },
        processResults: function (data, params) {
            params.page = params.page || 1;
            return {
                results: data,//itemList
                pagination: {
                    more: (params.page * 30) < data.total_count
                }
            };
        },
        cache: true
    }
 });

通过查询api知道,在select4.0之后可以使用 $(“select”).val(“id”).trigger(“change”);为下拉框赋值
你会发现下拉框中的数据是点击之后才会加载数据的,使用如上方法 ‘id’是未知的,原因是在编辑的时候下拉框的数据还没有加载出来

解决方法如下:

function getDataByGroupCode(groupCode){
    var dataStore;
    $.ajax({
        dataType : 'json',
        type : 'get',
        url : model.dataURL+groupCode,
        async : false,
        success: function(data){
            dataStore=data;
        }
     });
    return dataStore;
}    
var dataStore = getDataByGroupCode('yesOrNo');

$("#sel_status").select2({
    placeholder : "--请选择--",
    dropdownParent : $("#myModal"),
    allowClear : true,
    width : 150,
    minimumResultsForSearch: -1,
    data : dataStore
});

在页面加载的时候就加载下拉框数据,在编辑时就能为其赋值,问题解决!