我试图通过角度实施购物车解决方案,使客户能够从<ng-repeat>
中显示的项目列表中选择菜单项。这些菜单项表示为对象,我将这些菜单项对象列表存储在购物车阵列中。用户点击&#39; +&#39;我创建的按钮,购物车订单数组中包含的商品(或者如果订单数量已经存在,则增加订单数量),并且视图也会更新为包含&#39; - &#39;按钮减少订单。因此,隐含地,我有一个功能,检查我的购物车服务中的订单数组中的项目。一切都很好,直到刷新页面。购物车是从cookie中实例化的。购物车有正确的物品,但是&#39; - &#39;减量按钮不会显示在购物车中已选择的项目旁边。以下是我的代码。
html partial
<div class="col-xs-4">
<p>
{{category.items[$index].price | currency}}
<a ng-click="menu.addMenuItem(category.items[$index])"> <span class="plus glyphicon glyphicon-plus"></span></a>
<span ng-show="menu.getItemQuantity(category.items[$index])"> <!-- this does not work on refresh-->
{{menu.getItemQuantity(category.items[$index])}}
<a ng-click="menu.subMenuItem(category.items[$index])"> <span class="minus glyphicon glyphicon-minus"></span></a>
</span>
</p>
</div>
相关控制器功能
vm = this;
vm.getItemQuantity = function(item){ //always returns 0 on page refresh
return shoppingCart.getItemQuantity(item);
};
相关购物车服务功能 var cart = {}; cart.order = [];
var addItemToOrder = function(item){
var inOrder=isItemInOrder(item);
if(inOrder.check){
cart.order[inOrder.index].quantity+=1;
}else{
var orderItem={
item:item,
quantity:1
};
cart.order.push(orderItem);
}
setCartCookie();
};
//always initially returns check property equal to false on page refresh, although cart is instantiated from cookie
var isItemInOrder = function(item){
for(var i=0; i<cart.order.length; i++){
if(cart.order[i].item==item){
console.log('item in order list');
return {check:true, index:i};
}
}
return {check:false};
};
//more functions
似乎我的问题可能是由于这个东西$$ hashkey被添加为我的菜单项的属性,但我不知道该怎么做。有人可以帮助解决这个问题应用程序运行良好,直到应用程序刷新。页面上的菜单项不显示&#39; - &#39;按钮。
更新