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/

我认为你的数组数据有问题。请检查。