Я пытаюсь добавить продукты из одного списка в другой. Он отлично работал, прежде чем добавить к нему специальный фильтр. Когда я фильтрую список, т.е. класс = 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
Что я делаю не так?
Вам просто нужно передать не индекс, а текущий объект
<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);
};
$index
не обновляется для нового списка. Но сохраняет индекс предметов в исходном списке. Интересно, если это потому, что глобальные переменные создаются, а затем проходит через любые цепочки фильтров.