ここに私のクラス:
function Cart(){
if (typeof Cart.instance === 'object') {
return Cart.instance;
}
Cart.instance = this;
//the other method....
var self = this;
var items = window.localStorage.getItem(Cart.storageName);
this.addToCart = function(item){
if (!(items instanceof Array)) items = [];
var itemIndex = getItemIndexById(items, item.ID);
if(typeof(itemIndex) === 'number'){
items[itemIndex].QuantityInCart++;
}
else{
item.QuantityInCart = 1;
items.push(item);
}
window.localStorage.setItem(Cart.storageName, serializeObjToJSON(items));
};
}
Cart.storageName = "Cart";
次に、ボタンをクリックするとビューaddToCart
で関数を呼び出します。Home
addToCart
define(["jquery" ,
"underscore" ,
"backbone" ,
"text!templates/Home/homePanel.html",
"text!templates/Item/itemTemplate.html"
],function($ , _ , Backbone , HomePanel, ItemTemplate){
var promotionItem = _.template(ItemTemplate);
var homePanel = _.template(HomePanel);
var HomeView = Backbone.View.extend({
initialize: function() {
myCart1.updateQtyLabel("qtyCart");
window.localStorage.setItem("User",serializeObjToJSON(customer));
},
el: '#webbodycontainer',
events : {
"click #addToCart" : function(){
myCart1.addToCart(newItem);
myCart1.updateQtyLabel("qtyCart");
$("#containernewpromotion").html(promotionItem);
}
},
render : function(){
this.$el.html(homePanel);
$("#containernewpromotion").html(promotionItem);
}
});
return HomeView;
});
しかし、他のビューをクリックしてからHome
ビューに戻りaddToCart
、ボタンをもう一度クリックすると、アイテムが2倍に増加します(addToCart
メソッドは2回実行されます)。別のビューに移動してボタンをもう一度クリックすると、メソッドが 3 回実行されます。他のビューに移動して戻ってきて [カートに追加] ボタンをクリックすると、実行中addToCart
のメソッドが常に +1 になります。addToCart
これを引き起こしている可能性のある考え。ありがとう。