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.

¿Fue útil?

Solución

Sólo tiene que ajustar la llamada un poco, cambiar esto:

${getName()}

A esto:

${this.getName()}

Puede probarlo aquí .

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')

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top