Javascript 角度绑定不会更新
我正在使用angularjs为一个电子商务网站做一个前端,到目前为止,我遇到的唯一问题是购物车的实现。我有一个提供Javascript 角度绑定不会更新,javascript,angularjs,Javascript,Angularjs,我正在使用angularjs为一个电子商务网站做一个前端,到目前为止,我遇到的唯一问题是购物车的实现。我有一个提供购物车功能的服务,它有原型方法来添加,更改,以及从购物车中删除项目。下面是它的一个非常基本的版本(它包装在服务声明中): 这段代码在直接使用时似乎工作得很好,但在控制器中绑定时有一个奇怪的问题。这是购物车控制器: app.controller('CartCtrl', [ '$scope', 'Cart', function($scope, Cart) { $sco
购物车
功能的服务,它有原型方法来添加
,更改
,以及从购物车中删除
项目。下面是它的一个非常基本的版本(它包装在服务声明中):
这段代码在直接使用时似乎工作得很好,但在控制器中绑定时有一个奇怪的问题。这是购物车控制器:
app.controller('CartCtrl', [
'$scope',
'Cart',
function($scope, Cart) {
$scope.items = Cart.getItems();
$scope.total = Cart.getTotal();
$scope.delete = function(item){ Cart.remove(item) };
}
]);
将产品添加到购物车时,$scope.items
将更新并显示在ng repeat
ed列表中,但$scope.total
绑定不起任何作用。我知道它实际上正在更新,因为我在调试时将console.log
s放在了所有地方。我还尝试在总数更新后调用$rootScope.$apply()
,但它只是出错,因为它已经在运行
有人有什么想法吗?谢谢你的帮助 看看这是不是你的问题。。。这条线
$scope.total = Cart.getTotal();
在$scope上创建一个total
属性,由于getTotal()返回一个基本值,$scope.total被设置为0。此处没有绑定,因此当购物车的总价发生变化时,$scope.total将不会更新
($scope.items将在购物车的项目更改时更新,因为$scope.items被分配了对项目数组的引用。)我想可能是这样的。有没有办法让它指向它?$scope.total=function(){Cart.getTotal()}可能是最简单的方法。您还可以将总价放入购物车中的一个对象中,然后Cart.getItems()将返回如下内容。someObj.total\u price谢谢顺便说一句,这个答案帮助我了解了发生了什么。
$scope.total = Cart.getTotal();