javascript - Raphael:将 ".data"链接到 raphael.js 元素

标签 javascript jquery raphael

我在链接“.data到 raphael.js 元素时遇到问题。

当我稍后尝试检索数据时,我得到“未定义”。

这是我的 fiddle :http://jsfiddle.net/HkNgT/9/

//Draw:
paper.circle(circleCenterX, circleCenterY, circleCenterRadius)
    .attr({'fill':'blue', 'stroke':'red', 'stroke-width':2, 'opacity': 0.8}) 
    .data({"circleCenterX":circleCenterX, 
           "circleCenterY":circleCenterY, 
           "boxYPosition":boxYPosition, 
           "boxXPosition":boxXPosition})
    .id = name+"-circle";

//Output:
    console.log("data is = ", paper.getById(name+"-circle").data("circleCenterX"));

使用此代码,“.data(...)部分只是不起作用

当我尝试检索它(使用 paper.getById)时,它显示“数据 = 未定义”。

我尝试过的其他方法:

    //Doesn't work
    paper.circle....
    .data("circleCenterX",circleCenterX)
    .data("circleCenterY",circleCenterY)
    .data("boxYPosition",boxYPosition)
    .data("boxXPosition",boxXPosition);

还有一个:

    //Doesn't work
    var c = paper.circle....;
    c.data("circleCenterX",circleCenterX);
    c.data("circleCenterY",circleCenterY);
    c.data("boxYPosition",boxYPosition);
    c.data("boxXPosition",boxXPosition);

还有一个:

    //DOES work, but gives me huge performance losses
    paper.circle....;
    paper.getById(name+"-circle").data("circleCenterX",circleCenterX);
    paper.getById(name+"-circle").data("circleCenterY",circleCenterY);
    paper.getById(name+"-circle").data("boxYPosition",boxYPosition);
    paper.getById(name+"-circle").data("boxXPosition",boxXPosition);

有什么帮助吗?

最佳答案

所以,只是想帮忙,我以前从未使用过拉斐尔。我假设您正在尝试检索 circleCenterX 值?

检查data函数,它看起来好像只用于设置值。 (如果您设置一个值,它只会返回一个值)。

function (b,c){
    var d = bb[this.id] = bb[this.id] || {};
    if(arguments.length==1){
        if(a.is(b,"object")){
            for(var e in b)b[g](e)&&this.data(e,b[e]);
            return this
        }
        eve("raphael.data.get."+this.id,this,d[b],b);
        return d[b]
    }
    d[b]=c,eve("raphael.data.set."+this.id,this,c,b);
    return this
}

(事实上,eve 是一个事件框架,与 Raphael 捆绑在一起。有人知道数据从这里到哪里吗?)

所以这不会有帮助。

检查圆形对象,我能够看到/拉出一个 cx 值,我认为它是您正在寻找的 circleCenterX 值...

var circ = paper.getById(name+"-circle");
console.log("baseVal is = ", circ[0].cx.baseVal.value);
console.log("animVal is = ", circ[0].cx.animVal.value);

给予

baseVal is =  100
animVal is =  100

这是您要找的吗?

关于javascript - Raphael:将 ".data"链接到 raphael.js 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28755259/

相关文章:

javascript - 在 NodeList.connect() 注册的事件内部,如何获取对触发节点的引用?

javascript - 使用 AJAX 更新 d3 图表的最佳方法是什么

jquery .data 在 firebug 中不可见?

jquery - 为 Jquery 可排序 Portlet 添加最大化和最小化按钮

javascript - 如何正确拆分字符串数组,这是另一个问题吗?

javascript - 拉斐尔,让对象不接收事件

javascript - raphael Canvas 图像在 IE8 中无法正确显示

javascript - Angular ngx-mat-select-search 自定义组件

javascript - 与 jQuery 初始化之前的条件 DOM 检查有关的性能?

javascript - 如何使用 Canvas 在事件变化时绘制彩色方 block