AngularJS抛出未知错误
问题描述:
我的代码是这样的AngularJS抛出未知错误
<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 is not a function at Scope.$scope.newPrdItem
答
您通过发布push
它的呼叫处理prdElement
作为数组,但实际上是从视图中传递的对象:
这条线是什么失败。
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,
});
}
答
你可以只有.push()
到一个数组。但是您传递的参数prdElement
是一个对象,而不是一个数组,因此prdElement.push()
不是一个已定义的函数!
您最想推入的是palletElement。