父控制器监听来自子控制器的事件

时间:2015-05-14 19:25:50

标签: angularjs

我有一个父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);
};

但是当我添加到购物车时,我可以在日志中看到它们正被添加,但是,父控制器中的项目不会更新。我错过了什么?

1 个答案:

答案 0 :(得分:0)

您的计数未更新的原因是您将其设置为ProductFactory.getCartCount()返回的值。如果您对控制器中的$ scope.count进行进一步更改,则会发生更新,但对ProductFactory.getCartCount()的进一步更改不会发生。 这是你可以做的事情:

家长控制器:

$scope.getCount() = function () {
    return ProductFactory.getCartCount();
}

并且在您看来,不要使用{{count}},而是使用{{getCount()}}

我希望这有帮助!