2013-02-25 1 views
7

У меня есть следующий HTML:Угловые: нг щелкнуть параметр не работает

<i style="cursor:pointer" ng-click="addName()" class="icon-plus"></i> 
<i style="cursor:pointer" ng-click="delName({{$index}})" class="icon-remove"></i> 

И следующие функции в моем контроллере $scope:

$scope.addName = function() { 
    $scope.names.push($scope.newName); 
    $scope.newName = ''; 
}; 
$scope.delName = function(i) { 
    $scope.names.splice(i, 1); 
}; 

addName() работает нормально, но delName() никогда не называется. Невозможно ли связать ng-clik с функцией с аргументом?

ответ

14

Ошибка была в HTML, $ индекс нг повтора не следует оценивать заранее:

Это действительный HTML:

<i style="cursor:pointer" ng-click="delName($index)" class="icon-remove"></i> 
+1

У меня есть аналогичная проблема, updateProductState ({{product_id}}), она не вызывает функцию, но если я буду жестко кодировать статическое значение, это сработает. Есть идеи? спасибо – user1883793

+5

вы пробовали 'updateProductState (product_id)'? Вам не нужно '{{}}' в директиве ng –

+0

Это работает! Thanks – user1883793

0

код кажется хорошо для меня, вы можете изолировать ваши проблемы в jsFiddle?

EDIT: Удален неправильный ответ о сплайсинга не изменяя в массиве.

+0

Plain w rong: 'splice' модифицирует исходный массив и возвращает УДАЛЕННЫЕ элементы. Моя проблема в том, что функция никогда не вызывается. –

+0

Ах, вы правы, я устал, я думаю. Просто ответил на другой вопрос о Array.filter, который возвращает новый массив. Сожалею. –

+0

без проблем :) :) –

0

можно сделать следующим образом

<i ng-click="delName($index)" class="icon-remove"></i> 

В css

[ng-click], 
[data-ng-click], 
[x-ng-click] { 
    cursor: pointer; 
} 
Смежные вопросы