如何将其他参数传递给graffle.js

时间:2015-01-05 23:24:11

标签: javascript svg raphael

我正在尝试将另一个参数传递给graffle的连接函数,以便我可以根据该新参数在该行的末尾绘制带/不带箭头的连接。

要绘制连接,我通常会执行以下操作:

connections.push(paper.connection(obj1, obj2, "#000"));

现在我想以这种方式添加这个新参数:

connections.push(paper.connection(condCol, ret, "#000",true));

但参数始终为undefined

这就是我改变连接功能的方式:

Raphael.fn.connection = function (obj1, obj2, line, bg, addArrow) {

  //...

  if (line && line.line) {
      //...
    } else {
        // based on the 'addArrow' parameter I can figure out 
        // whether I should put an arrow at the end of the line or not
        var settings;
        if (addArrow) {
            //If addArrow was true, draw a arrow at the end of the line
            settings = { "stroke": color, fill: "none", 'stroke-width': 2, 'arrow-end': 'block-midium-midium' };
        }
        else {
             //If addArrow was false, just draw a line
            settings = { "stroke": color, fill: "none", 'stroke-width': 2 };
        }
        return {
            bg: bg && bg.split && this.path(path).attr({ stroke: bg.split("|")[0], fill: "none", "stroke-width": bg.split("|")[1] || 3 }),
            line: this.path(path).attr(settings), //use the settings
            from: obj1,
            to: obj2
        };
    }

}

你知道为什么这不起作用吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

您的新connection()函数需要五个参数。你只传了四个。这就是addArray未定义的原因。您传递的true值将进入bg参数。试着这样打电话:

connections.push(paper.connection(condCol, ret, "#000", null, true));

答案 1 :(得分:1)

对不起伙计们,我没有注意到那些是可选参数。 解决方案很简单。 我只是改变了这个方法的定义:

Raphael.fn.connection = function (obj1, obj2, line, bg, addArrow) {

}

并调用该函数,省去第四个参数:

connections.push(paper.connection(condCol, ret, "#000","",true));

就是这样。