1

select2 バージョン 3.5.1 を 4.0 にアップグレード中です。委任にはクエリメソッドを使用する必要がありました。

2つの特定の問題が発生します

  1. minimumInputLength が有効になっていない
  2. ユーザーが検索ボックスにフォーカスすると、過去の結果が Searching.. で表示されます。最初の項目です。(空の結果を割り当てると問題は解決しますが、結果が見つかりませんというメッセージが表示されます)

以下の私のコードスニペットを参照してください。

var self = this, $view = $(view);

        $.fn.select2.amd.require(['select2/data/array', 'select2/utils', 'select2/data/minimumInputLength'], function (ArrayData, Utils, MinimumInputLength) {

            function CustomData($element, options) {
                CustomData.__super__.constructor.call(this, $element, options);
                this.options = options;
            }

            Utils.Extend(CustomData, ArrayData);

            CustomData.prototype.query = function (params, callback) {
                //callback({ results: [] });
                self.searchText(params.term);
                q(ko.unwrap(self.qPromise)).then(function () {
                    var select2data = $.map(ko.unwrap(self.dataSource), function (obj) {
                        obj.id = obj.id || obj.Id + obj.KeyDoc;
                        obj.text = obj.text || obj.Headline;
                        return obj;
                    });
                    callback({ results: select2data });
                });
            }

            // Decorate after the adapter is built
            Utils.Decorate(CustomData, MinimumInputLength);

            $view.select2({
                dataAdapter: CustomData,
                multiple: ko.unwrap(self.multiple),
                templateResult: ko.unwrap(self.formatFunc),
                escapeMarkup: function (markup) { return markup; },
                dropdownParent: $('.' + ko.unwrap(self.containerClass)),
                placeholder: ko.unwrap(self.placeHolderCaption),
                minimumInputLength: 1,
                allowClear: true
            });

        });

提案リスト (キャッシュなし、保存なし) に新しいオプションを割り当てるたびに、回避策を提案してください。

ありがとうございます

4

0 に答える 0