Select2异步搜索数据

  $('#countryID').select2(
          {
            placeholder: "请选择国家",
            ajax: {
              dataType: 'json',
              type: 'POST',
              delay: 500,
              data: function (params) {
                return {
                  SearchKey: params.term         //params.term 搜索参数值
                };
              },
              transport: async function (params, success, failure) {   //这个params和上个params是不太一样,建议 console.log(params)
                if (typeof (params.data.SearchKey) == "undefined") {   //刚聚焦是参数值是undefined的
                  var data = await vm.searchCountries({});         //data是返回的绑定数据,json数组 [{"ComapnyDistrictCode":[],"ParentID":"0","Name":"阿富汗伊斯兰国"},{...}]
                  if (data && data.length > 0) {
                    success(data);                     //插件自带的回调success函数,
                  } else {
                    failure();
                  }
                }
                else if (params.data.SearchKey.length >= 2) {       //如果输入的参数值大于等于2,去搜索数据
                  var data = await vm.searchCountries(params.data);
                  if (data && data.length > 0) {
                    success(data);
                  } else {
                    failure();
                  }
                }               
              },
              processResults: function (data, page) {
                var arr = [];
                data.map(x => arr.push({ id: x.ID, text: x.NameEn + '(' + x.Name + ')' }));  //整理绑定格式 , 放到arr里
                return {
                  results: arr,
                  more: false
                };
              },
              cache: true
            },
            escapeMarkup: function (markup) {
              return markup;
            },
            // let our custom formatter work
            // minimumInputLength: 2, //至少输入多少个字符后才会去调用ajax
            // maximumInputLength: 20, //最多能输入多少个字符后才会去调用ajax
            // minimumResultsForSearch: 1,
            // width: "260px",
            templateResult: function (data) {
              if (data.loading) return data.text;
              return "<div>" + data.text + "</div>";
            },
            templateSelection: function (data) {
              return data.text;
            }
          }).on('change', function () {          //onchange函数回调
            // 這裡呼叫回調並傳入現在選取的 value                   
            vm.customFrom.Country = this.value;
            vm.customFrom.CountryIndex = this.selectedIndex;
            this.isInitSelect = true;
          });
        }
      },
      searchCountries(params) {        //异步请求数据
        return new Promise(function (resolve, reject) {
          $fn.post($api.getCountries, params, ret => {
            if (ret.ErrorCode == 1 && ret.Data) {
              resolve(ret.Data);
            } else {
              resolve([]);
            }
          });
        });

 

转载于:https://www.cnblogs.com/bibi-feiniaoyuan/p/9365300.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值