Select2 not using my templateResults or templateSelection options

▼魔方 西西 提交于 2020-01-23 04:28:06

问题


I am trying to use the select2 ajax call with templates. I am getting the ajax in just fine but it is not using my template functions.

the ajax data is:

[
   {"name":"First thing","otherData":"asdfg"},
   {"name":"Second thing","otherData":"qqerr"},
   {"name":"third thing","otherData":"yerty"},
   {"name":"fourth thing","otherData":"hgjfgh"},
   {"name":"fifth thing","otherData":"fhgkk"}
]

the select2 code (which i took a lot from here ) is:

FundSearch = {
    create: function (selector, theURL) {
      $(selector).select2({
        ajax: {
          url: theURL,
          dataType: 'json',
          delay: 250,
          data: function (params) {
            console.log(params.term);
            return {
              q: params.term, // search term
              page: params.page
            };
          },
          results: function (data, page) {
            // parse the results into the format expected by Select2.
            // since we are using custom formatting functions we do not need to
            // alter the remote JSON data
            return {
              results: data
            };
          },
          cache: true
        },
        escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
        minimumInputLength: 1,
        templateResult: formatData,
        templateSelection: formatDataSelection
      });

      function formatData (data) {
          if (data.loading) return data.name;

          markup = "<h1>" + data.name + "</h1>" + "<p>" + data.otherData + "</p>";

          return markup;
        }

        function formatDataSelection (data) {
          return data.name;
        }


    }
};

The error I am getting is Uncaught TypeError: Cannot read property 'toUpperCase' of undefined on line 356 of select2.js for Version: 3.5.2.

It seems to me that select2 is not using my templateSelection and templateResults function.


回答1:


You are looking at the 4.0.0 documentation but are using 3.5.2. You can still access the 3.5.2 documentation.

Specifically, the templateSelection and templateResult options only exist in 4.0.0. They were called formatSelection and formatResult in 3.5.2.




回答2:


In select2 3.5.2., it is "formatResult" (singular, not formatResults)



来源:https://stackoverflow.com/questions/29146743/select2-not-using-my-templateresults-or-templateselection-options

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!