Angular:影响数组查找的ng-repeat(可能是$$ hashkey)

时间:2016-08-21 20:27:49

标签: angularjs service

我试图通过角度实施购物车解决方案,使客户能够从<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;按钮。

更新

我从chrome工具中拍摄了一张照片,看起来两个已经单独实例化的相同对象并不等同。这是正常的吗? similar objects

0 个答案:

没有答案