Raphael:将“.data”链接到raphael.js元素

时间:2015-02-27 00:09:55

标签: javascript jquery raphael

我很难链接" .data" 到raphael.js元素。

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

这是我的小提琴: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);

任何帮助?

1 个答案:

答案 0 :(得分:1)

所以,只是想帮助,我以前从未使用过raphael。我假设您正在尝试检索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
}

(Afaict,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

这是你正在寻找的吗?