1

我正在将 select2 版本 3.5.1 升级到 4.0。我要求使用查询方法来授权。

有两个具体问题出现

  1. minimumInputLength 没有生效
  2. 当用户聚焦搜索框时,过去的结果显示为 Searching.. 是第一项。(如果我分配空结果,那么它会解决问题,但随后会显示 No results found 消息)

请参考我下面的代码片段。

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