我正在尝试将产品从一个列表添加到另一个列表。在我添加自定义过滤器之前,它工作正常。当我过滤列表时,即等级= 2,当我添加第一个项目时,它引用未过滤列表的第一个项目。
<tr ng-repeat="job_product in job_products | filter : customFilter">
<td>{{job_product.name}}</td>
<td>{{job_product.grade}}</td>
<td>{{job_product.slump}}</td>
<td>{{job_product.flow}}</td>
<td>{{job_product.last_delivered}}</td>
<td><button ng-click="addProduct($index)">Add</button></td>
</tr>
$scope.addProduct = function (index) {
var product = $scope.job_products[index];
var newProduct = angular.copy(product);
$scope.products.push(newProduct);
};
这是掠夺者。 http://plnkr.co/edit/2O7cEom1YIWSfGqmAsEb?p=preview
我做错了什么?
答案 0 :(得分:4)
你只需要传递不是索引,而是当前对象
<tr ng-repeat="job_product in job_products | filter : customFilter">
<td>{{job_product.name}}</td>
<td>{{job_product.grade}}</td>
<td>{{job_product.slump}}</td>
<td>{{job_product.flow}}</td>
<td>{{job_product.last_delivered}}</td>
<td><button ng-click="addProduct(job_product)">Add</button></td>
</tr>
$scope.addProduct = function (product) {
var newProduct = angular.copy(product);
$scope.products.push(newProduct);
};