1

У меня есть некоторые динамические элементы (то есть список) на странице. Я хочу добавить обработчик для действия onClick для каждого элемента, кроме того, каждый элемент должен вызывать этот обработчик с указанными данными.Как вызвать функцию foo ("someName") с использованием шаблона в AngularJS?

Я попытался это:

ЯШ:

$scope.data = [ 
     { 
     id: 1, 
     name: "1", 
     order: "10" 
     },  
     { 
     id: 2, 
     name: "2", 
     order: "20" 
     },  
     { 
     id: 3, 
     name: "3", 
     order: "30" 
     } 
    ]; 

HTML:

<div ng-repeat="item in data" name="{{ 'name_' + item.id }}" ng-click="onClick({{ '\'name_' + item.id +'\'' }})" value="item"> 
    Item name is "{{ item.name }}" 
    </div> 

Когда я наблюдаю РОМ Я вижу правильный HTML: нг-клик = "OnClick ('name_1') ", но когда я нажимаю на строку, ничего не происходит. Зачем? (также, я получаю длинную красную ошибку angularJS в консоли, заявив, что я действительно ошибаюсь)

Как я могу достичь того, что хочу? Я не говорю, что это должно быть сделано моим подходом. Может быть, есть другой подход - лучше, чем мой (например, использовать некоторое угловое свойство (например, ng-repeat имеет: $ index))

+0

Почему вы не можете просто вызвать onClick (item.id), и создать ли он нужную строку 'name_id'? – Sacho

+0

Поскольку функция уже используется в других элементах. Используется: onFocus ('elementName'). Другие элементы даже не имеют идентификаторов. –

+0

Итак, создайте новую функцию, которая создает строку и вызывает вашу другую функцию. – Sacho

ответ

2

ngClick Директива нуждается в выражении в нем. Вы не должны интерполировать что-либо внутри него. Так должно быть:

ng-click="onClick('name_' + item.id)" 
Смежные вопросы