父控制器收听来自子控制器的事件
问题描述:
我有一个父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);
};
然而,当我加入到购物车,我可以在日志中看到它们正在添加,但是,父控制器中的项目不会更新。我错过了什么?
答
您的计数未更新的原因是您将其设置为ProductFactory.getCartCount()所返回的值。如果您在控制器中对$ scope.count进行了进一步更改,则会发生更新,但对ProductFactory.getCartCount()的进一步更改不会。 这里是东西,你可以这样做:
父控制器:
$scope.getCount() = function() {
return ProductFactory.getCartCount();
}
,并在您的视图,而不是使用{{数}},使用{{getCount将()}}
我希望这可以帮助!
父控制器的代码片段是什么? – ABOS
对不起,我把它叫做'shell'控制器,这是父代码片段 –
shell控制器如何知道孩子已经更新。你没有向我们展示我相信的相关代码。 – PSL