Javascript 从主干视图调用模板中的变量
我正在使用Javascript 从主干视图调用模板中的变量,javascript,backbone.js,requirejs,Javascript,Backbone.js,Requirejs,我正在使用文本!require.js的插件,用于加载我的主干项目的javascript模板 这是: <table id="showcart"> <tr><td class="cartitemhead">Item to buy</td><td class="cartitemhead" style="text-align: center;">Quantity</td></tr> <% _.
文本!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>
型号:
define(["underscore" , "backbone"],function(_ , Backbone){
var Cart = Backbone.Model.extend({
});
});
我从控制台收到一个错误:未捕获引用错误:未定义项
非常感谢您提供的任何帮助。您需要以某种方式指出希望传递给主干模板的值。因为您已经定义了一个变量,所以下划线模板正在寻找一个要替换的值 因此,请尝试将模型值作为参数传递给附加视图
var CartListView = Backbone.View.extend({
render: function(){
var item = deserializeJSONToObj(window.localStorage.getItem("Cart"));
var cartList = _.template(showCartTemplate, {})
$("#cartlist").append({item : cartList});
}
});
这样,每次undercore查找变量
项时,它都将替换为作为参数传递给视图的值。您需要在传递到.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变量。Oop!如上所述,传递模型值?实际上现在我的模型是空的。我应该在模型中保留什么?(对不起,我对主干非常陌生)。您是否将模型或集合传递到主干视图?我的意思是,为了使用模型的数据,您必须指向主干模型或集合。我添加了模型,我将模型指向view ready,但我确实知道,我应该在模型中写入哪些数据:|如果您不知道,那么我应该如何知道?:)实际上,模型是一组包含键值对的对象。主干网官方网站将为您提供所有必要的解释:。也许如果你再解释一点,你想要实现什么会更有帮助。对象item
存储在localStorage中,其键和值如下var item={DepartmentID:333,CategoryID:117,ID:711}
那么我应该在我的模型中存储这个对象?
var CartListView = Backbone.View.extend({
render: function(){
var item = deserializeJSONToObj(window.localStorage.getItem("Cart"));
var cartList = _.template(showCartTemplate, {item : item})
$("#cartlist").append({item : cartList});
}
});