проблема при запуске с шаблонами jquery

#javascript #jquery #jquery-templates

#javascript #jquery #jquery-шаблоны

Вопрос:

У меня есть: jquery1.6.min, jquery-tmpl.js (последняя бета-версия) и knockout-1.2.0.js . Я использую очень простой пример, но я не могу заставить шаблоны jquery отображаться, я не могу понять почему, проще говоря, я могу видеть элементы в dom, сканируя dom с помощью firebug — у меня появляется какой-то tmp = annonymous (jquery, $ item), но данные не отображаются внутри dom.

шаблон:

 <script id="bookTemplate" type="text/x-jquery-tmpl">
    <h2>${title}</h2>
    price: ${formatPrice(price)}
</script>
  

jscode:

 <script type="text/javascript">
        $(document).ready(function() {
        // Create an array of books
        var books = [
            { title: "ASP.NET 4 Unleashed", price: 37.79 },
            { title: "ASP.NET MVC Unleashed", price: 44.99 },
            { title: "ASP.NET Kick Start", price: 4.00 },
            { title: "ASP.NET MVC Unleashed iPhone", price: 44.99}];

        function formatPrice(price) {
            return "$"   price.toFixed(2);
        }

        // Render the books using the template
        $('#bookTemplate').tmpl(books).appendTo('#bookContainer');
        });
    </script>
  

Ответ №1:

 window.formatPrice = function formatPrice(price) {
    return "$"   price.toFixed(2);
}
  

Живой пример

Ваш вызов formatPrice в вашем шаблоне, но определение функции в вашем закрытии. Чтобы иметь возможность делать это formatPrice , он должен находиться в глобальной области видимости. Простой способ сделать это — назначить функцию windiw.formatPrice

Комментарии:

1. Я чувствую себя полным идиотом… то, что вы мне показали, помогло мне, но я пропустил добавление фактического контейнера, к которому я добавлял: ‘<идентификатор div=»bookContainer»></div>’

2. @Харун О. Я предполагал, что у вас это было в вашем HTML : D Если это решило вашу проблему, примите это 🙂

3. По какой-то причине мне пришлось подождать 4 минуты, сойдет. Спасибо 🙂