我一直试图传递由ng-repeat生成的SVG元素的ID。
每个人都有一个cx,cy和一个id:
$scope.circles = [
{cx:25, cy:40, id:1},
{cx:55, cy:40, id:2},
{cx:75, cy:40, id:3}];
使用以下代码在HTML中插入:
<circle ng-repeat= "c in circles"
ng-attr-cx={{c.cx}}
ng-attr-cy={{c.cy}}
ng-attr-id={{c.id}}
r="6" stroke="black" stroke-width="3" fill="red"
ng-mouseover ="changeR(this)" />
有一个&#34;基地&#34;这些放置的SVG模板,它们出现在适当的位置。
当我检查页面元素时,会出现ID。在SVG定义结束时,ng-mouseover函数应该使用id,并允许修改圆圈...我将内插id属性传递给后端函数的所有尝试似乎都失败了。我跟随的例子是:fiddle,它在一些排列中产生了警报,但是id是&#34; undefined&#34;或&#34; [对象]&#34; ...
我在后端的功能目前设置为
$scope.changeR= function (id){
alert(id);
var circleChange = document.getElementById(id);
circleChange.setAttribute("r", "20");
}
这会产生一个带有&#34; [object Object]&#34;的警告,虽然我认为我已经坚持使用小提琴中的模式,该模式在小提琴中起作用,在警报窗口中将id作为文本引入。当我直接传递函数内插的id号时,它可以很好地改变半径,就像我想要的那样(我用硬编码的ID得到元素,半径在那个圆上变化......)
如何将此ID传递给后端,以便我可以获取元素并让它有效地修改自己的属性?如果是页面加载的问题,并且不知何时没有及时注册ID,为什么鼠标悬停事件不会处理完全加载的页面?