Угловой фильтр добавления предметов по $ index

0

Я пытаюсь добавить продукты из одного списка в другой. Он отлично работал, прежде чем добавить к нему специальный фильтр. Когда я фильтрую список, т.е. класс = 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
    просто передать не индекс, а текущий объект
Теги:

1 ответ

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);
};
  • 0
    Пожалуйста, не могли бы вы объяснить, почему. Из того, что я могу понять, это не должно иметь никакого значения. РЕДАКТИРОВАТЬ: о, подождите, я думаю, я понял, потому что когда список фильтруется, переменная $index не обновляется для нового списка. Но сохраняет индекс предметов в исходном списке. Интересно, если это потому, что глобальные переменные создаются, а затем проходит через любые цепочки фильтров.
  • 0
    @ Гранди, это сработало. Спасибо!
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню