我有一个父shell html文件,其中有一个图标来更新购物车中的产品数量。该号码应该从工厂检索。
angular
.module('awesome')
.factory('ProductFactory', productFactory);
function productFactory($log) {
var factory = {
addCartProducts: addCartProducts,
getCartCount: getCartCount
},
cartProducts = [];
return factory;
function addCartProducts(product)
{
cartProducts.push(product);
getCartCount();
$log.info(cartProducts.length);
}
function getCartCount() {
return cartProducts.length;
}
}
在父控制器中,我从
中取出scope
值
$scope.count = ProductFactory.getCartCount()
在子控制器中,我添加到购物车
$scope.addToCart = function (product) {
ProductFactory.addCartProducts(product);
};
但是当我添加到购物车时,我可以在日志中看到它们正被添加,但是,父控制器中的项目不会更新。我错过了什么?
答案 0 :(得分:0)
您的计数未更新的原因是您将其设置为ProductFactory.getCartCount()返回的值。如果您对控制器中的$ scope.count进行进一步更改,则会发生更新,但对ProductFactory.getCartCount()的进一步更改不会发生。 这是你可以做的事情:
家长控制器:
$scope.getCount() = function () {
return ProductFactory.getCartCount();
}
并且在您看来,不要使用{{count}},而是使用{{getCount()}}
我希望这有帮助!