从jquery模板问题开始

时间:2011-05-11 16:05:20

标签: javascript jquery jquery-templates

我有:jquery1.6.min,jquery-tmpl.js(最新测试版)和knockout-1.2.0.js。我使用的是一个非常简单的示例,但是我无法获取jquery模板进行渲染,我无法弄清楚为什么,简单地说我可以通过使用firebug扫描dom来看到dom中的元素 - 我有一些tmp =匿名(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 个答案:

答案 0 :(得分:0)

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

Live Example

您在模板中调用formatPrice,但在闭包中定义了该函数。为了能够做到这一点formatPrice必须在全球范围内。一种简单的方法是将函数分配给windiw.formatPrice