我正在设计一个带角度的菜单订购系统,允许人们拥有相同订单的多个数量。使用ng-show时遇到问题。从我的理解ng-show跟踪提供的表达式,但在我的情况下它似乎只评估它一次。以下是我的代码。
查看
<a ng-click="menu.addMenuItem(category.items[$index])"> <span class="plus glyphicon glyphicon-plus"></span></a>
<span ng-show="{{menu.getItemQuantity(category.items[$index])}}">
{{menu.getItemQuantity(category.items[$index])}}
<a ng-click="menu.subMenuItem(category.items[$index])"> <span class="minus glyphicon glyphicon-minus"></span></a>
</span>
控制器
var vm=this;
vm.getItemQuantity = function(item){
return shoppingCart.getItemQuantity(item);//refers to service function
}
服务
var getItemQuantity = function(item){
var inOrder = isItemInOrder(item); //custom function
if(inOrder.check){
return cart.order[inOrder.index].quantity;
}else{
return 0;
}
}
此代码的目标是在客户选择要包含的菜单项后,切换视图中的span元素以显示。目前,当一个项目添加到视图时,整个应用程序都会注册它。事件中ng-show中的函数也会返回正确的答案,但由于某种原因,它不会自动保持不变。它似乎只是在评估我的表达一次。是什么给了什么?
答案 0 :(得分:2)
我已经解决了我的问题。事实证明,ng-show属性接受一个表达式,因此我应该改变
ng-show="{{expression}}"
到
ng-show="expression"