Select2 json 数据无效
Select2 json data not working
我正在尝试在元素具有 class "select2picker" 时挂钩 select2 如果下拉列表的源是数组,我也在自定义。我的代码如下
$('.select2picker').each(function() {
var settings = {};
if ($(this).attr('data-json')) {
var jsonValue = JSON.parse($(this).attr('data-json')).val());
settings = {
placeholder: $(this).attr('data-placeholder'),
minimumInputLength: $(this).attr('data-minimumInputLength'),
allowClear: true,
data: jsonValue
}
}
$(this).select2(settings);
});
但结果很糟糕,它无法挂钩所有 select2 下拉列表
但是当我注释掉数据 属性 时,输出显示完美(但数据绑定丢失)
我的数组如下所示
[ { "id": "2015-0152", "text": "2015-0152" }, { "id": "2015-0153", "text": "2015-0153" }, { "id": "2016-0001", "text": "2016-0001" }, { "id": "2016-0002", "text": "2016-0002" }, { "id": "2016-0003", "text": "2016-0003" }, { "id": "2016-0004", "text": "2016-0004" }, { "id": "2016-0005", "text": "2016-0005" }, { "id": "2016-0006", "text": "2016-0006" }, { "id": "2016-0007", "text": "2016-0007" }, { ... }, { "id": "2015-0100", "text": "2015-0100" }, { "id": "2015-0101", "text": "2015-0101" }, { "id": "2015-0080", "text": "2015-0080" }, { "id": "2015-0081", "text": "2015-0081" }, { "id": "2015-0090", "text": "2015-0090" }, { "id": "2015-0102", "text": "2015-0102" }, { "id": "2015-0112", "text": "2015-0112" }, { "id": "2015-0128", "text": "2015-0128" }, { "id": "2015-0136", "text": "2015-0136" } ]
我真的很困惑到底出了什么问题。有什么想法吗?
选择2版本:3.4.8
这一行报错:var jsonValue = JSON.parse($(this).attr('data-json')).val());
应该是:var jsonValue = JSON.parse($(this).attr('data-json'));
.
还有你问题中的这一行:
i am also customising if the source of the dropdown list is an array
向我表明它也可能不是是一个数组。因此,在将数据传递给 select2 之前,您应该检查它是否是一个数组。
已编辑:我想到的另一件事如下。
如果您为占位符使用数据属性,我认为您不需要像此处那样将这些属性的值第二次传递给 select2
placeholder: $(this).attr('data-placeholder'),
minimumInputLength: $(this).attr('data-minimumInputLength'),
可能您需要从两者中选择一个(在您的设置中传递它,或者使用属性)。由于 select2 查看数据属性以获取值。
我检查了上面的内容是否正确,但事实并非如此。它在 fiddle 中工作正常:https://jsfiddle.net/wL7oxbpv/
我认为你的数组数据有问题。请检查。
我正在尝试在元素具有 class "select2picker" 时挂钩 select2 如果下拉列表的源是数组,我也在自定义。我的代码如下
$('.select2picker').each(function() {
var settings = {};
if ($(this).attr('data-json')) {
var jsonValue = JSON.parse($(this).attr('data-json')).val());
settings = {
placeholder: $(this).attr('data-placeholder'),
minimumInputLength: $(this).attr('data-minimumInputLength'),
allowClear: true,
data: jsonValue
}
}
$(this).select2(settings);
});
但结果很糟糕,它无法挂钩所有 select2 下拉列表
但是当我注释掉数据 属性 时,输出显示完美(但数据绑定丢失)
我的数组如下所示
[ { "id": "2015-0152", "text": "2015-0152" }, { "id": "2015-0153", "text": "2015-0153" }, { "id": "2016-0001", "text": "2016-0001" }, { "id": "2016-0002", "text": "2016-0002" }, { "id": "2016-0003", "text": "2016-0003" }, { "id": "2016-0004", "text": "2016-0004" }, { "id": "2016-0005", "text": "2016-0005" }, { "id": "2016-0006", "text": "2016-0006" }, { "id": "2016-0007", "text": "2016-0007" }, { ... }, { "id": "2015-0100", "text": "2015-0100" }, { "id": "2015-0101", "text": "2015-0101" }, { "id": "2015-0080", "text": "2015-0080" }, { "id": "2015-0081", "text": "2015-0081" }, { "id": "2015-0090", "text": "2015-0090" }, { "id": "2015-0102", "text": "2015-0102" }, { "id": "2015-0112", "text": "2015-0112" }, { "id": "2015-0128", "text": "2015-0128" }, { "id": "2015-0136", "text": "2015-0136" } ]
我真的很困惑到底出了什么问题。有什么想法吗?
选择2版本:3.4.8
这一行报错:var jsonValue = JSON.parse($(this).attr('data-json')).val());
应该是:var jsonValue = JSON.parse($(this).attr('data-json'));
.
还有你问题中的这一行:
i am also customising if the source of the dropdown list is an array
向我表明它也可能不是是一个数组。因此,在将数据传递给 select2 之前,您应该检查它是否是一个数组。
已编辑:我想到的另一件事如下。 如果您为占位符使用数据属性,我认为您不需要像此处那样将这些属性的值第二次传递给 select2
placeholder: $(this).attr('data-placeholder'),
minimumInputLength: $(this).attr('data-minimumInputLength'),
可能您需要从两者中选择一个(在您的设置中传递它,或者使用属性)。由于 select2 查看数据属性以获取值。
我检查了上面的内容是否正确,但事实并非如此。它在 fiddle 中工作正常:https://jsfiddle.net/wL7oxbpv/
我认为你的数组数据有问题。请检查。