Javascript 如何使用angular.forEach AngularJS检测是否添加了对象

Javascript 如何使用angular.forEach AngularJS检测是否添加了对象,javascript,arrays,angularjs,foreach,Javascript,Arrays,Angularjs,Foreach,我正在尝试将对象添加到$scope.orderitems,如果该对象已在$scope.orderitems中,我希望使用angular.forEach更改该对象的quantity属性,而不是添加另一个对象。无论何时调用additem函数,都会出现一个错误,即未定义orderitems 这是我的密码 HTML <input type="text" ng-model="item.name"> <button type="button" ng-click="additem(item)

我正在尝试将对象添加到$scope.orderitems,如果该对象已在$scope.orderitems中,我希望使用angular.forEach更改该对象的quantity属性,而不是添加另一个对象。无论何时调用additem函数,都会出现一个错误,即未定义orderitems

这是我的密码

HTML

<input type="text" ng-model="item.name">
<button type="button" ng-click="additem(item)">

<ul>
    <li ng-repeat="orderitem in orderitems">
        <p>{{ orderitem.name }} | {{ orderitem.qty }}</p>
    </li>
</ul>
这是一把小提琴:

HTML

这是一把小提琴:

HTML


angular.forEach($scope.orderitems,function)(orderItem……
angular.forEach($scope.orderitems,function(orderItem……
我更新了小提琴->这是一把工作小提琴:。以防有人仍在使用Angular 1。我更新了小提琴->这是一把工作小提琴:。以防有人仍在使用Angular 1。
app.controller('OrderCtrl', function($scope) {
    $scope.orderitems = [];
    $scope.additem = function(data) {

        angular.forEach(orderitems, function(orderitem) {
            if (orderitem.id === data.id) {
                orderitem.qty = orderitem.qty++;
            } else {
                data.qty = 1;
                $scope.orderitems.push(data);
            }
        });
    };
});
$scope.orderitems = [];
$scope.additem = function(data) {
    var item = null
    angular.forEach(orderitems, function(orderItem) {
        if (orderItem.id === data.id) {
            item = orderItem
            return false;
        }
    });
    if (item == null) {
       item = {
         id: data.id, qty : 0
       }
       $scope.orderitems.push(item)
    }

    item.qty++
};
<body ng-app="app">
    <div ng-controller="OrderCtrl">
    <input type="text" ng-model="item.name">
        <button type="button" ng-click="additem()">add</button>

    <ul>
        <li ng-repeat="orderitem in orderitems">
            <p>{{ orderitem.name }} | {{ orderitem.qty }}</p>
        </li>
    </ul>
</div>
var app = angular.module('app', []);

app.controller('OrderCtrl', function($scope) {

    $scope.orderitems = [{name: 'foo', id:1, qty:1}];
    $scope.additem = function() {
        var exists = false;
        var data = {
            id : $scope.orderitems.length + 1,
            name: $scope.item.name,
            qty: 1
        }
        angular.forEach($scope.orderitems, function (item) {
            if (item.name == data.name) {
                exists = true;
                item.qty++;
                return false;
            }
        });
        if(!exists){
            $scope.orderitems.push(data);
        }

    };
});