我一直在尝试传递由 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)" />
有一个“基础”SVG 模板,它们放置在其中,并且它们出现在适当的位置。
当我检查页面元素时,ID 是存在的。在 SVG 定义的末尾,ng-mouseover 函数应该采用 id,并允许修改圆......我所有将内插 id 属性传递给后端函数的尝试似乎都失败了。我遵循的示例在这里:fiddle,它在某些排列中产生警报,但 id 是“未定义”或“[object Object]”......
我在后端的功能目前设置为
$scope.changeR= function (id){
alert(id);
var circleChange = document.getElementById(id);
circleChange.setAttribute("r", "20");
}
这会产生一个带有“[object Object]”的警报,尽管我认为我已经坚持了小提琴中的模式,它在小提琴中工作,通过 id 作为警报窗口中的文本。当我直接通过函数插入的 id 数字时,它可以很好地改变我想要的半径(我通过硬编码的 ID 获取元素,并且半径在那个圆上发生变化......)
如何将此 ID 传递到后端,以便我可以获取元素并让它有效地修改自己的属性?如果这是页面加载的问题并且以某种方式没有及时注册 ID,为什么鼠标悬停事件不会处理完全加载的页面?