Angularjs $watch在angular中的新项的对象数组中找不到对属性的更改
我有一个像这样的对象数组Angularjs $watch在angular中的新项的对象数组中找不到对属性的更改,angularjs,Angularjs,我有一个像这样的对象数组 [{ name: 'foo', price: 9.99, qty: 1 }] UI允许将新项目添加到此阵列。我正在尝试侦听要添加的新项目以及每个项目的quaty属性的更改 $scope.order = []; $scope.totalItems = 0; $scope.$watchCollection('order', function() { $scope.totalItems = $scope.order.reduce(function(memo, o)
[{ name: 'foo', price: 9.99, qty: 1 }]
UI允许将新项目添加到此阵列。我正在尝试侦听要添加的新项目以及每个项目的quaty
属性的更改
$scope.order = [];
$scope.totalItems = 0;
$scope.$watchCollection('order', function() {
$scope.totalItems = $scope.order.reduce(function(memo, o) {
return memo + o.qty;
}, 0);
});
$scope.addItem = function() {
$scope.order.push({
name: $scope.item.name,
qty: 1,
options: []
});
};
从这里你可以看到。。。该函数在添加新项目时启动,但在该新项目的
数量
更改时不会启动。也许您应该在数量输入框中附加一个ngChange
?像这样
<input ng-model="item.qty" ng-change="calculateTotal()" type="number"/>
然后在“添加项目”功能的末尾:
$scope.addItem = function() {
// Your logic
$scope.calculateTotal();
};
EDIT:仔细考虑后,
ngChange
可能会在调用addItem
函数时自动调用,因此从addItem
调用它可能不是完全必要的您能快速模拟JSFIDLE或类似的东西吗?BAM。非常感谢。无论如何,这比不得不使用$watchCollection
要好得多!
$scope.addItem = function() {
// Your logic
$scope.calculateTotal();
};