从骨干视图中调用模板中的变量

时间:2013-09-30 09:20:53

标签: javascript backbone.js requirejs

我正在使用text! plug-in的require.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

非常感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

您需要以某种方式指出要为骨干模板传递的值。因为您已定义变量,所以Underscore模板正在寻找要替换的值。

为此,请尝试将模型值作为参数传递给附加视图。

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

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

答案 1 :(得分:0)

您需要在_.template

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

因为您无法直接在模板中访问项目变量。