0

我刚从 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 获得的新内容而更新。

感谢您的任何指示。

4

1 回答 1

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
    
于 2013-10-09T07:36:42.357 回答