Javascript 如何使用angular.forEach AngularJS检测是否添加了对象
我正在尝试将对象添加到$scope.orderitems,如果该对象已在$scope.orderitems中,我希望使用angular.forEach更改该对象的quantity属性,而不是添加另一个对象。无论何时调用additem函数,都会出现一个错误,即未定义orderitems 这是我的密码 HTMLJavascript 如何使用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)
<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);
}
};
});