角度过滤器通过$ index添加项目

时间:2015-12-03 13:17:35

标签: javascript angularjs

我正在尝试将产品从一个列表添加到另一个列表。在我添加自定义过滤器之前,它工作正常。当我过滤列表时,即等级= 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

我做错了什么?

1 个答案:

答案 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);
};