Select2版本4无法设置数据/选择

时间:2015-05-10 10:32:32

标签: jquery-select2

我刚刚升级到版本4,现在我的设置数据无效

我正在执行以下操作,在更新之前工作正常

初始

$("#fertilizer").select2({
        data: listToLoad,
        placeholder: mf('pleaseSelectFertilizer',"please select fertilizer")
    }).on('change', function (e) {
        var concentration = $("#fertilizer").select2('data')[0].concentration;
        $("#typesOfConcentration").text(concentration);
        $("#typesOfConcentrationDiv").removeClass("hide");
    });


var fertilizer = $("#orders").select2('data')[0].fertilizer;
var fertilizerId = $("#orders").select2('data')[0].id;
var concentration = $("#orders").select2('data')[0].concentration;
$("#fertilizer").select2("data", {id: fertilizerId, text:fertilizer});

1 个答案:

答案 0 :(得分:2)

正如release notestwice actually)中所述,.select2("data")现在是只读的。如果您将Select2置于调试模式(将debug选项设置为true),这实际上会触发警告。

在您的情况下,您根本不需要使用.select2('data')。您似乎只是在使用它,因此您可以将fertilizer重新映射到text,这应该在选择该选项之前以方式完成The id and text properties are required在将data传递给Select2之前重新映射它们并不需要太多。

var listToLoad = $.map(listToLoad, function (obj) {
  obj.text = obj.text || obj.fertilizer;

  return obj;
});

$("#fertilizer").select2({
    data: listToLoad,
    placeholder: mf('pleaseSelectFertilizer',"please select fertilizer")
 }).on('change', function (e) {
    var concentration = $("#fertilizer").select2('data')[0].concentration;
    $("#typesOfConcentration").text(concentration);
    $("#typesOfConcentrationDiv").removeClass("hide");
});

对于实际使用.select2('data')的所有其他人,您现在应该可以使用.val()并只需传入需要设置的id。如果您需要选择一个实际上不存在的选项,您可以提前为它创建<option>(就像在标准<select>中一样)。