jquery-tmpl - función de plantilla que no trabaja
-
25-09-2019 - |
Pregunta
El siguiente código:
jQuery(document).ready(function($) {
function getBooks() {
var query = "ajax.php?do=allbooks";
$.ajax({
dataType: "jsonp",
url: query,
jsonp: "callback",
success: showBooks
});
}
function showBooks(data) {
$("#bookTmpl").tmpl(data, {
getName: function() {
return 'bla';
}
}).appendTo( "#test" );
}
getBooks();
});
Lo que estoy tratando de hacer es usar el getName () - función en mi plantilla.
Vamos a suponer que mi aspecto plantilla como esta:
<script id="bookTmpl" type="text/x-jquery-tmpl">
<li>
${title} by ${author}<br />
Rating: ${rating} -> ${getName()}
</li>
</script>
¿Qué tengo que cambiar para que funcione? En este momento, la función no está aún ejecutado. Todo lo demás funciona.
Solución
Sólo tiene que ajustar la llamada un poco, cambiar esto:
${getName()}
A esto:
${this.getName()}
Otros consejos
Intente conectar la devolución de llamada error: fn
en $.ajax
y ver lo que podría estar equivocado. Tal vez el JSON es incorrecto (se puede comprobar que con jsonlint.org). Si el success: fn
ni siquiera está siendo llamado, algo está mal (404, JSON error de análisis, etc.).
Además, JSONP podría ser un poco exagerado si usted está solicitando JSON desde el mismo dominio (por ejemplo, intentar algo así como $.getJSON
o dataType: 'json'
)