InitSelection 在 Select2 4.0.3 js 中不起作用

InitSelection not work in Select2 4.0.3 js

我正在使用 select2,一切正常,但默认选择不起作用,

我正在使用 select2 4.0.3 js

我正在使用 initSelection,但是它的显示像这样的截图,

var data = <?php echo $cat_json; ?>;
function templateResult(node) {
    var $result = $('<span style="padding-left:' + (20 * node.level) + 'px;">' + node.text + '</span>');
    return $result;
};
function formatSelection(node) {
    return node.sel_text;
};
$("#mySelect").select2({
    initSelection: function (element, callback) {
        var file_id = 29;
        $.ajax({
            url: "/admin/folders/get_selected_cat/" + file_id,
            dataType: "json",
        }).done(function (data) {   
            console.log(data); //Object {id: "1", text: "Product"}
            callback(data.text);
        });
    },
    placeholder: 'Select an option',
    width: "600px",
    tags: true,
    data: data,
    templateSelection: formatSelection,
    templateResult: templateResult,
});

你能帮我解决这个问题吗?

谢谢

您必须触发所选值

var selected = [{id: "20"}]; 
var data = <?php echo $cat_json; ?>;
function templateResult(node) {
    var $result = $('<span style="padding-left:' + (20 * node.level) + 'px;">' + node.text + '</span>');
    return $result;
}
;
function formatSelection(node) {
    return node.sel_text;
}
;
$("#mySelect").select2({
    placeholder: 'Select an option',
    width: "600px",
    tags: true,
    data: data,
    templateSelection: formatSelection,
    templateResult: templateResult,
});
$('#mySelect').val(selected).trigger('change');

我希望这段代码能起作用。

经过多次测试,对于 4.0.3 版本,此技巧有效

initSelection: function (element, callback)
        {
            var id = $(element).val();
            if (id !== "" && id !== 0)
            {
                $.ajax(url,
                        {
                            data: {q: id},
                            dataType: "json"
                        }).done(function (data)
                {
                    $.each(data, function (i, value)
                    {                      
                        input.append('<option value='+value[0].id+' selected>'+value[0].text+'</option>');                    
                        callback({id: value[0].id,text: value[0].text});
                    });
                    ;
                });
            }
        }

这很适合我..:)

initSelection: function (element, callback)
            {
                var id = $(element).val();
                if (id !== "" && id !== 0)
                {
                    $.ajax("/visits/exam/findings/selected?visit_id=" + $('#visit_id').val(),
                        {
                            data: {q: id},
                            dataType: "json"
                        }).done(function (data)
                    {
                        $.each(data, function (i, value)
                        {
                            $("#basic_exam_findings").append('<option value='+value['id']+' selected>'+value['text']+'</option>');
                            callback({id: value['id'],text: value['text']});
                        });
                        ;
                    });
                }
            }