我的代码就像这样
<body>
<div>
<table ng-app='myApp'>
<thead>
</thead>
<tbody ng-controller="MainCtrl">
<tr ng-repeat="prdElement in palletElement">
<td>
{{prdElement.name}}
</td>
<td>
{{prdElement.itemId}}
</td>
<td>
{{prdElement.shipmentId}}
</td>
<td>
{{prdElement.itemCode}}
<td>
{{prdElement.description}}
</td>
<td>
{{prdElement.handlingUnit}}
</td>
<td>
{{prdElement.weight}}
</td>
<td>
{{prdElement.class}}
</td>
<td>
{{prdElement.lenght}}
</td>
<td>
{{prdElement.width}}
</td>
<td>
{{prdElement.height}}
</td>
<td>
{{prdElement.flag}}
</td>
<td>
<input type="text" ng-model="prdElement.quantity" placeholder=" Code" required />
</td>
<td>
<button ng-click="newPrdItem( prdElement,$event)">Submit</button>
</td>
</tr>
<tr>
</tr>
</tbody>
</table>
</div>
(function () {
angular.module('myApp', []).controller('MainCtrl', function ($scope) {
var counter = 0;
$scope.palletElement = [{
name: 'Pallet 1',
itemId: '284307',
shipmentId: 'eb44f690-c97a-40e3-be2a-0449559e171a',
itemCode: '',
description: 'Bicycle parts - frame',
quantity: '31',
handlingUnit: 'CTN',
weight: '613.04',
class:'',
lenght: '102',
width: '42',
height: '61',
flag:'P'
}, {
name: 'Pallet 2',
itemId: '284308',
shipmentId: 'eb44f690-c97a-40e3-be2a-0449559e171a',
itemCode: '',
description: 'Bicycle parts - fork',
quantity: '22',
handlingUnit: 'CTN',
weight: '242.99',
class: '',
lenght: '75',
width: '34',
height: '18',
flag: 'P'
}]
$scope.newPrdItem = function (prdElement, $event) {
counter++;
alert(prdElement.name);
prdElement.push({
name: prdElement.name,
itemId: prdElement.itemId,
shipmentId: prdElement.shipmentId,
itemCode: prdElement.itemCode,
description: prdElement.description,
quantity: prdElement.quantity,
handlingUnit: prdElement.handlingUnit,
weight: prdElement.weight -10,
class: prdElement.class,
lenght: prdElement.lenght,
width: prdElement.width,
height: prdElement.height,
flag: prdElement.flag,
});
}
});
}());
所有看起来都没问题,但这会在按钮点击时抛出一个未知错误
TypeError:undefined不是函数 在Scope。$ scope.newPrdItem
答案 0 :(得分:1)
您通过在prdElement
上发出push
调用将prdElement.push({
视为数组,但这实际上是从视图传递的对象:
这条线是失败的。
var items = [];
$scope.newPrdItem = function (prdElement, $event) {
counter++;
alert(prdElement.name);
items.push({
name: prdElement.name,
itemId: prdElement.itemId,
shipmentId: prdElement.shipmentId,
itemCode: prdElement.itemCode,
description: prdElement.description,
quantity: prdElement.quantity,
handlingUnit: prdElement.handlingUnit,
weight: prdElement.weight -10,
class: prdElement.class,
lenght: prdElement.lenght,
width: prdElement.width,
height: prdElement.height,
flag: prdElement.flag,
});
}
我会创建一个单独的数组来跟踪被点击的项目
{{1}}
答案 1 :(得分:0)
您只能.push()
到数组。但是你传递的参数prdElement
是一个Object,而不是一个数组,因此prdElement.push()
不是一个定义的函数!
你最想要的是palletElement。