我刚刚升级到版本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});
答案 0 :(得分:2)
正如release notes(twice 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>
中一样)。