将角插值ID传递给函数

时间:2016-09-08 00:05:16

标签: svg angularjs-ng-repeat angularjs-interpolate

我一直试图传递由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,为什么鼠标悬停事件不会处理完全加载的页面?

0 个答案:

没有答案