4

Seems that this is a very common issue with angular. The substitutions happen, but the ng-click fails to click (or so it seems to not be called). Can someone tell me why this fails?

<ul>
     <li ng-repeat="color in colors"> 
         <a ng-click="chooseColor({{$index}})">{{color.name}}</a>
     </li>
</ul>

here is the fiddle.

It seems to be the {{$index}}. If i replace that with a static number, it works.

Note: found this question - but it was not helpful.

1
  • 3
    Quick note in using $index for changing a value in the scope. If you filter the original array using | filter: sth method (basically if you filter on the view), then the index on the view could be different than the actual, nonfiltered array. It is better to accept the value itself rather than the index. Commented Apr 3, 2013 at 21:05

1 Answer 1

14

The {{}} bits are used templating (interpolation). This should work for you:

ng-click="chooseColor($index)"

The ng-click directive is looking for real JavaScript code an Angular Expression, not text that it needs to interpolate.

Sign up to request clarification or add additional context in comments.

1 Comment

Note, ng-click requires an Angular expression (not JavaScript code).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.