【发布时间】:2016-08-11 10:38:38
【问题描述】:
当我的产品在购物车中时,我想将 CSS 类应用于按钮。我尝试了一些类似的东西
<li class="add-to-cart">
<button class="btn btn-add-cart" ng-click="cartCtrl.updateCart(product)"
ng-class="cartCtrl.cart[product.id] && 'active'">
<i class="shopping-cart" aria-hidden="true"></i>
</button>
</li>
和
<li class="add-to-cart">
<button class="btn btn-add-cart" ng-click="cartCtrl.updateCart(product)"
ng-class="{active: cartCtrl.cart[product.id]}">
<i class="shopping-cart" aria-hidden="true"></i>
</button>
</li>
来自我的控制器的updateCart 函数片段:
function _updateCart(product) {
if (ctrl.cart[product.id] == product.quantity) {
// If a product with same quantity is getting added, remove it from cart
delete ctrl.cart[product.id];
} else {
// add/update into cart
ctrl.cart[product.id] = product.quantity;
}
}
所以ctrl.cart 将产品 ID 作为键,将对应的数量作为值。如果产品 ID 在购物车中,cartCtrl.cart[product.id] 会给出数量。如果数量大于0,则应应用active类。
但它不起作用。它应该可以工作,因为最终我的expression 应该评估为真值或假值。喜欢ng-class="{active: 0}"、ng-class="{active: 2}"
为什么它不起作用?
【问题讨论】:
-
什么是购物车Ctrl.cart[product.id]
-
请出示您的控制器
-
cartCtrl.cart 将产品作为键,将数量作为值
-
@Harry 添加了控制器代码
-
@Hussain,它应该可以工作,我建议你创建一个简单的演示来重现这个问题..