我刚开始使用Backbone.js。现在我正在尝试将商品添加到存储在localStorage中的购物车。这是我的观点:
define(["jquery" ,
"underscore" ,
"backbone" ,
"text!templates/Cart/itemtemplate.html",
"cart",
"script"
],function($ , _ , Backbone , ItemTemplate, Cart , Script){
var items = deserializeJSONToObj(localStorage.getItem("Cart"));
var myCart = new Cart();
var newItem = {
"ID" : 348,
"ItemCode" : "0352862925041",
"PartNumber" : ""
};
if (!(items instanceof Array)) items = [];
var promotionItem = _.template(ItemTemplate,{});
var HomeView = Backbone.View.extend({
initialize: function() {
myCart.updateQtyLabel("qtyCart");
$("#containernewpromotion").html(promotionItem);
},
el: '.addToCart-form',
events : {
"click #addToCart" : function(){
myCart.addToCart(newItem);
myCart.updateQtyLabel("qtyCart");
$("#containernewpromotion").html(promotionItem);
}
},
render : function(){
$("#containernewpromotion").html(promotionItem);
}
});
return HomeView;
当我点击“添加到购物车”按钮时,项目数量updateQtyLabel()
功能的标签正在运行,但内容html不会使用从localStorage获取的新内容进行更新。
感谢您的任何指示。
答案 0 :(得分:1)
您使用var promotionItem = _.template(ItemTemplate,{});
准备模板
通过传递第二个参数{}
,您强制插入变量,promotionItem
则是固定字符串,并且在更新数据时不会更改。
您可能想要做的是:
准备编译模板:
var promotionItem = _.template(ItemTemplate);
获取更新的HTML内容:
var html = promotionItem(myCart.toJSON());
将其注入您的元素:
this.$el.html(html);
// in your case, $("#containernewpromotion").html(html);
// but I'm really not fond of fixed DOM elements in modules