0

Ist es möglich, alle abgerufene ferne Werte in Typeahead Bind-Funktion zu erhalten?Bootstrap Typeahead: Wie alle ferne ferne Werte in typeahead Bind-Funktion abgerufen werden

var bankNames = new Bloodhound({ 
     datumTokenizer: function (datum) { 
      return Bloodhound.tokenizers.whitespace(datum.value); 
     }, 
     queryTokenizer: Bloodhound.tokenizers.whitespace, 
     limit: 10, 
     remote: { 
      url: '/payments/bankwithdrawal/bankdetails?str=%QUERY, 
      prepare: function (query, settings) { 
       var encoded = query.toUnicode(); 
       settings.url = settings.url.replace('%QUERY', encoded); 
       return settings; 
      } 
     } 
     }); 

     bankNames.initialize(); 

     // Initializing the typeahead 
     $('.typeahead').typeahead({ 
       hint: true, 
       highlight: true, // Enable substring highlighting 
       minLength: 1 // Specify minimum characters required for showing result 
       }, 
       { 
       name: 'bankname', 
       source: bankNames 
       }).bind('change blur', function() { 

       console.log(bankNames); 

       console.log(bankNames.index.datums); 

    }); 

Es sollte geben Sie mir alle bankNames in bankNames.index.datums aber es gibt mir

Object {} 
__proto__: Object 
constructor: function Object() 
hasOwnProperty: function hasOwnProperty() 
isPrototypeOf: function isPrototypeOf() 
propertyIsEnumerable: function propertyIsEnumerable() 
toLocaleString: function toLocaleString() 
toString: function toString() 
valueOf: function valueOf() 
__defineGetter__: function __defineGetter__() 
__defineSetter__: function __defineSetter__() 
__lookupGetter__: function __lookupGetter__() 
__lookupSetter__: function __lookupSetter__() 
get __proto__: function __proto__() 
set __proto__: function __proto__() 

ich alle bankNames in bind Funktion benötigen, wo ich brauche etwas zu tun.

Wenn ich in Bindefunktion console.log(bankNames) drucke, sollte es mir alle entfernten Werte zurückgeben.

Antwort

1

Ich habe die Lösung mit Hilfe von transform, die ein Teil von Bloodhound ist. Bei der Konfiguration der Remote-Option stehen die Optionen transform zur Verfügung.

Transformation - Eine Funktion, mit der Signatur-Transformation (Antwort), dass können Sie die Remote-Antwort zu transformieren, bevor die Bloodhound Instanz auf sie tätig ist.

Sie können mehr über Bloodhound Option in diesem Link lesen https://github.com/twitter/typeahead.js/blob/master/doc/bloodhound.md#remote

var bankNameList; 
var bankNames = new Bloodhound({ 
     datumTokenizer: function (datum) { 
      return Bloodhound.tokenizers.whitespace(datum.value); 
     }, 
     queryTokenizer: Bloodhound.tokenizers.whitespace, 
     limit: 10, 
     remote: { 
      url: '/payments/bankwithdrawal/bankdetails?str=%QUERY, 
      prepare: function (query, settings) { 
       var encoded = query.toUnicode(); 
       settings.url = settings.url.replace('%QUERY', encoded); 
       return settings; 
      }, 
      transform : function (data) { 
       bankNameList = data; 
       return data; 
      } 
     } 
     }); 

     bankNames.initialize(); 

     // Initializing the typeahead 
     $('.typeahead').typeahead({ 
       hint: true, 
       highlight: true, // Enable substring highlighting 
       minLength: 1 // Specify minimum characters required for showing result 
       }, 
       { 
       name: 'bankname', 
       source: bankNames 
       }).bind('change blur', function() { 

       console.log(bankNameList); 

     }); 

Jetzt Wenn Sie bankNameList innerhalb bind Funktion typeahead console.log(bankNameList); drucken wird es Daten drucken, die von entfernten abgerufen wird.