Связывание действия кнопки на AngularJS

У меня есть следующий код для удаления элемента из списка на AngularJS:

$scope.removeItem = function() {
  if($scope.items.indexOf(toDelete) > -1) {
    var index = $scope.items.indexOf(toDelete);
    $scope.items.splice(index, 1);
  }
};

И следующий код в моем нефритовом шаблоне:

  div.row.spacing-small(ng-repeat='item in items')
    div.col-lg-4: p {{item}}
    div.col-lg-2: button.btn.btn-danger.btn-block Delete

Объект items в основном представляет собой массив, например: ['foo', 'bar']. Есть ли способ связать кнопку "Удалить" с функцией removeItem? Я все еще играю с этой фантастической структурой, но она настолько новая, что иногда трудно найти нужную вещь в документации.


person john smith    schedule 30.07.2013    source источник


Ответы (2)


div.row.spacing-small(ng-repeat='item in items')
    div.col-lg-4: p {{item}}
    div.col-lg-2: button.btn.btn-danger.btn-block(ng-click=\"removeItem($index)\")


$scope.removeItem = function(index) {
    $scope.items.splice(index, 1);
};

Это должно помочь

ОБНОВЛЕНО

JSFIDDLE

person dcodesmith    schedule 30.07.2013

Я бы использовал директиву ng-click и вызвал removeItem(item). Поскольку вы выполняете ng-repeat, каждый повторяющийся блок будет иметь правильную ссылку на элемент. Кроме того, я обнаружил, что при вызове функций из ng-repeat проще всего заставить функцию ссылаться на объект, который она должна изменить.

person Josh Petitt    schedule 30.07.2013