View中没有使用文本在Backbone中更新!插入

时间:2013-10-09 07:22:52

标签: javascript jquery backbone.js requirejs

我刚开始使用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获取的新内容进行更新。

感谢您的任何指示。

1 个答案:

答案 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