【问题标题】:Select2 option templateResult not being called未调用 Select2 选项模板结果
【发布时间】:2019-02-27 13:29:16
【问题描述】:

我想使用 templateResult 选项来使用 select2 v4 格式化我的结果。我有以下代码:

$(".search").select2({
    minimumInputLength: 3,
    ajax: {
        url: url,
        dataType: 'json',
        delay: 250,
        processResults: function (data) {
            return {
                results: data.items
            };
        },
        templateResult: function (data) {
            console.log('templateResult');
            return '<span><img src="//example.com/img.png" /> ' + data.text + '</span>';
        },
    }
});

但是,templateResult 似乎没有被调用,因为没有任何内容输出到控制台。即使我将返回更改为“TEST”,仍会显示默认结果。无论我是否包含 templateResult,代码的工作方式都是一样的。

【问题讨论】:

  • 奇怪 - 它似乎在这里工作正常:jsfiddle.net/RoryMcCrossan/waxt54cv.
  • 谢谢 - 没有 ajax 调用,但它帮助我发现了问题。 templateResult 选项在 ajax 回调中。
  • 啊,是的!我自己错过了。很高兴你成功了

标签: javascript jquery jquery-select2


【解决方案1】:

我在 ajax 范围内有 templateResult。修复如下:

$(".search").select2({
    minimumInputLength: 3,
    ajax: {
        url: url,
        dataType: 'json',
        delay: 250,
        processResults: function (data) {
            return {
                results: data.items
            };
        },
    },
    templateResult: function (data) {
        console.log('templateResult');
        return '<span><img src="//example.com/img.png" /> ' + data.text + '</span>';
    }
});

【讨论】:

    【解决方案2】:

    检查你的processResults - results: data.items,我切换到data.results

    【讨论】:

    • 最好您能以格式良好的方式详细说明这一点。
    猜你喜欢
    • 2017-10-07
    • 2020-06-30
    • 2013-06-12
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多