2017-10-04 75 views
1

我得到的数据使用JSON调用(图像和相关标题的列表),并采用NG-重复如下显示它:

<div ng-repeat="x in records"> 
    <img src='images/{{ x.img }}' alt='{{ x.txt }}'/> 
</div> 

我想设置$ scope变量在使用这样的事情我鼠标放在每个图像:

<div ng-repeat="x in records"> 
    <img ng-mouseover='$scope.txt = "{{ x.txt }}")' src='images/{{ x.img }}' alt='{{ x.txt }}'/> 
</div> 

此代码不起作用,因为“{{x.txt}}”被解释为一个字符串,其值的txt $ scope变量每次都设置为'{{x.txt}}'...

如何将鼠标悬停在图像上时设置此变量?

非常感谢您的建议!

+0

'$ scope.t xt = x.txt'应该可以工作.....另外,您可能需要使用'ng-src'。 – Claies

+0

谢谢,这工作! ng-src似乎不是必要的...... –

回答

0

首先,您不能在HTML中写入$scope

而是写ng-mouseover='$scope.txt = "{{ x.txt }}")'

应该是这样的:

ng-mouseover='txt=x.txt' 

但是它也不会工作,因为你用ng-repeat

所以最终的解决方案是使用$parent

<img ng-mouseover="$parent.txt = x.txt" ng-init="txt=''" src='{{ x.img }}' alt='{{ x.txt }}'/> 

Demo Plunker 1


或者你可以拨打ng-mouseover一些方法:

<img ng-mouseover="foo(x.txt)" src='{{ x.img }}' alt='{{ x.txt }}'/> 

和:

$scope.foo = function(txt){ 
    $scope.txt = txt; 
}; 

Demo Plunker 2

+0

我实际上使用这种方式的功能就像你所建议的那样。我有这样的: ''{{ x.name }} 而下面的功能: '$ scope.popOver =函数($事件,TXT){$ = scope.popTxt TXT; var offset = 20; var l = event.pageX + offset +“px”; var t = event.pageY + offset +“px”; $ scope.stylePopover = {“position”:“absolute”,“left”:l,“top”:t,“width”:“100px”,“height”:“100px”,“background-color”珊瑚“,”z-index“:”1000“ }' –