jquery-tmpl - функция шаблона не работает - PullRequest
2 голосов
/ 24 октября 2010

Следующий код:

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

Я пытаюсь использовать функцию getName () - в моем шаблоне.

Давайте представим, что мой шаблон выглядит так:

<script id="bookTmpl" type="text/x-jquery-tmpl">
    <li>
    ${title} by ${author}<br />
    Rating: ${rating} -> ${getName()}
    </li>
</script>

Что мне нужно изменить, чтобы он работал?В настоящее время функция даже не выполняется.Все остальное работает.

Ответы [ 2 ]

4 голосов
/ 24 октября 2010

Вам просто нужно немного настроить вызов, измените это:

${getName()}

На это:

${this.getName()}

Вы можете проверить это здесь .

1 голос
/ 24 октября 2010

Попробуйте присоединить обратный вызов error: fn в $.ajax и посмотрите, что может быть не так.Возможно, JSON искажен (вы можете проверить это с помощью jsonlint.org).Если success: fn даже не вызывается, что-то не так (404, ошибка синтаксического анализа JSON и т.например, попробуйте что-то вроде $.getJSON или dataType: 'json')

...