Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs $watch在angular中的新项的对象数组中找不到对属性的更改_Angularjs - Fatal编程技术网

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();
};