2013-08-28 109 views
14

我使用ng-repeat模板自定义指令的范围内:传递参数到NG-点击指令,自定义指令

<li ng-repeat="image in images"> 
    <img ng-src="{{image.url}}" ng-click="togglePhoto({{$index}})"> 
</li> 

当源看起来像

<li ng-repeat="image in images" class="ng-scope"> 
    <img ng-src="http://example.com/example.jpg" ng-click="togglePhoto(1)" src="http://example.com/example.jpg"> 
</li> 
在页面上呈现

我有我的指令中定义的功能togglePhoto。如果没有传入参数{{index}},它将起作用并调用该函数。通过索引,它不会触发。

如何获取点击进togglePhoto函数的照片索引?

+0

'togglePhoto(x)'是如何定义的? – zsong

回答

37

想通了。希望它能帮助其他人坚持下去。

首先这个

ng-click="togglePhoto({{$index}})" 

应该是不需要

ng-click="togglePhoto($index)" 

牙套!

其次我发现,你可以传递事件对象为点击的功能,例如

ng-click="togglePhoto($event)" 

然后赶上该事件,并找出哪些因素触发它的点击功能

$scope.togglePhoto = function(e) 
{ 
    console.log(e.currentTarget) 
} 
1

我想问题在于你在ng-click内部使用了双花括号,并且角度不是那样的。

试着改变你的转发器,这(注意,约为$指数没有大括号):

<li ng-repeat="image in images"> 
    <img ng-src="{{image.url}}" ng-click="togglePhoto($index)"> 
</li> 

我也把一起工作的jsfiddle表明这个工程。

http://jsfiddle.net/n02ms8s0/4/