jquery typeahead.js

jquery - Plantilla personalizada Typeahead sin manillares



typeahead.js (2)

Estoy intentando implementar el ejemplo de "Plantilla personalizada" de Typeahead.JS.

$(''#custom-templates .typeahead'').typeahead(null, { name: ''best-pictures'', displayKey: ''value'', source: bestPictures.ttAdapter(), templates: { empty: [ ''<div class="empty-message">'', ''unable to find any Best Picture winners that match the current query'', ''</div>'' ].join(''/n''), suggestion: Handlebars.compile(''<p><strong>{{value}}</strong> – {{year}}</p>'') } });

Específicamente esta línea:

suggestion: Handlebars.compile(''<p><strong>{{value}}</strong> – {{year}}</p>'')

Inicialmente, no me di cuenta de que debía requerir explícitamente a Handlebars como una dependencia:

Uncaught ReferenceError: Handlebars is not defined

Cuando quito los manillares ...

suggestion: ''<p><strong>'' + value + ''</strong> – '' + year + ''</p>''

Da otro error de JS:

Uncaught ReferenceError: value is not defined

¿Es posible usar una plantilla de vista personalizada sin usar el motor de manillares?


Esto podría ayudar - lo he integrado con Bootstrap:

<div class="col-lg-3" id="the-basics"> <input type="text" class="typeahead form-control" placeholder="my placeholder" aria-describedby="basic-addon1"> </div> $(''#the-basics .typeahead'').typeahead(null, { name: ''best-pictures'', display: ''imageUrl'', source: function show(q, cb, cba) { console.log(q); var url = ''/yoururl/''+q; $.ajax({ url: url }) .done(function(res) { cba(res.list);; }) .fail(function(err) { alert(err); }); }, limit:10, templates: { empty: [ ''<div class="empty-message">'', ''No data'', ''</div>'' ].join(''/n''), suggestion: function(data) { return ''<p><strong>'' + data.itemName + ''</strong> - <img height:"50px" width:"50px" src=''+data.imageUrl+''></p>''; } } });


Utilice este formato:

suggestion: function(data) { return ''<p><strong>'' + data.value + ''</strong> – '' + data.year + ''</p>''; }

Tomado de este hilo .