0

この例に従って、select2 を使用して ajax 呼び出しを実装しようとしています: https://github.com/genemu/GenemuFormBundle/blob/master/Resources/doc/jquery/select2/ajax.md

これが私のコードです:

        var $configs = {{ configs|json_encode|raw }};

    $field = $('#{{ id }}');
    $configs = $.extend($configs, {
        ajax: {
            id: function (friend) { return friend.username; },
            url: $field.data('url'),
            data: function (term, page) {
                return { q: term, page_limit: 10, page: page };
            },
            results: function (data, page) {
                var more = (page * 10) < data.total;
                return { results: data, more: more };
            }
        },
        formatResult: function (friend) {
            var markup = "<div class='friend-results-box'>";
            if (friend.avatar !== undefined) {
            markup += "<img width='60' height='75' src='" + friend.avatar + "'/>";
            }
            markup += "<h5>" + friend.username + "</h5>";
            markup += "<div class'clearfix'></div>";
            markup += "</div>";
            return markup;
        },
        initSelection : function (element, callback) {
            var elementText = $(element).attr('data-init-text'); // ?
            callback({"term":elementText});
        },
        formatSelection: function (friend) { return friend.username; },
        escapeMarkup: function (m) { return m; },
        dropdownCssClass: "dropdown-friends"
    });

    $field.select2($configs);

今私の問題は次のとおりです。

  1. 私の意図は、jsonから取得した値をfriend.usernameとして定義することである場合、値にIDが入力されています
  2. ページのリロード後、初期値が画面に表示されず (値が ID に設定されているため)、select2 はそれを取得しません。

ヒントやヘルプをいただければ幸いです。

4

1 に答える 1

0

initSelection 関数には次のようなものがあります: callback({"term":elementText});

デフォルトでは、Select2 は {id:"someid", text:"sometext"} を想定しています。

どんな種類の書式設定もなしでシンプルに始めるのが最善です。

于 2013-05-04T13:29:50.107 に答える