0

我正在使用text! plug-inrequire.js 来加载我的骨干项目的 javascript 模板。

这里是 :

<table id="showcart">
    <tr><td class="cartitemhead">Item to buy</td><td class="cartitemhead" style="text-align: center;">Quantity</td></tr>
       <% _.each(item, function(item) { %>
            <tr><td><table class="verticallist"><tr><td rowspan="4" style="width: 120px;"><img src="<%=item.PictureName%>" alt="Product" width="95px"/></td><td style="font-weight: bold;"><%=trimString(item.Name,50)%></td></tr><tr><td><i>Available in Stock(s)!</i></td></tr><tr><td><i>Rating: 650Va-390w Input:   Single</i></td></tr></table></td><td class="centertxt"><%=item.QuantityInCart%></td></tr>
       <% }); %>
</table>

item在我看来,变量是声明的。

var CartListView = Backbone.View.extend({
    render: function(){
        var item = deserializeJSONToObj(window.localStorage.getItem("Cart"));
        var cartList = _.template(showCartTemplate, {})
        $("#cartlist").html(cartList);
    }
});

模型 :

define(["underscore" , "backbone"],function(_ , Backbone){
   var Cart = Backbone.Model.extend({

   });
});

我从控制台收到一个错误:Uncaught ReferenceError: item is not defined

任何帮助将不胜感激,谢谢。

4

2 回答 2

1

您需要以某种方式指示要为骨干模板传递的值。因为您已经定义了一个变量,所以下划线模板正在寻找一个要替换的值。

出于这个原因,尝试将模型值作为参数传递给附加视图。

var CartListView = Backbone.View.extend({
    render: function(){
        var item = deserializeJSONToObj(window.localStorage.getItem("Cart"));
        var cartList = _.template(showCartTemplate, {})
        $("#cartlist").append({item : cartList});
    }
});

这样,每次当 undercore 找到一个变量item时,它将替换为作为参数传递给视图的值。

于 2013-09-30T10:23:40.487 回答
0

您需要在 _.template 中传递的对象中传递项目键

var CartListView = Backbone.View.extend({
    render: function(){
        var item = deserializeJSONToObj(window.localStorage.getItem("Cart"));
        var cartList = _.template(showCartTemplate, {item : item})
        $("#cartlist").append({item : cartList});
    }
});

因为您不能直接在模板中访问 item 变量。

于 2014-07-27T08:06:00.483 回答