web-dev-qa-db-fra.com

Select2 n'utilise pas mon templateResults ou templateSelection options

J'essaie d'utiliser l'appel ajax select2 avec des modèles. Je reçois l'ajax très bien, mais il n'utilise pas mes fonctions de modèle.

les données ajax sont:

[
   {"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"}
]

le code select2 (dont j'ai pris beaucoup de ici ) est:

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;
        }


    }
};

L'erreur que j'obtiens est Uncaught TypeError: Cannot read property 'toUpperCase' of undefined à la ligne 356 de select2.js pour la version: 3.5.2.

Il me semble que select2 n'utilise pas mes fonctions templateSelection et templateResults.

15
Bwata

Vous consultez la documentation 4.0.0 mais utilisez 3.5.2. Vous pouvez toujours accéder à la documentation 3.5.2.

Plus précisément, les options templateSelection et templateResult existent uniquement dans 4.0.0. Ils étaient appelés formatSelection et formatResult dans 3.5.2.

41
Kevin Brown

Dans select2 3.5.2., C'est "formatResult" (singulier, pas formatResults)

3
Pierre Jauniaux