【问题标题】:getting paper object when raphael is created with callback function使用回调函数创建 raphael 时获取纸张对象
【发布时间】:2019-11-22 12:17:16
【问题描述】:

您好,我是 raphael 的初学者,有疑问。 每当我使用回调函数(如下所示)创建一个 raphael 对象时,调用都不会返回纸质对象。

var w = 1000;
var h = 400;
var paper = Raphael('svgContainer', w, h, function(){
    console.log('callback');
});
paper.setViewBox(0,0,w,h,true);

为什么使用回调函数时paper没有返回raphael对象?

https://dmitrybaranovskiy.github.io/raphael/reference.html#Raphael

每当我使用回调函数时,paper.setViewBox 都会失败,因为 paper 是 eve 的某种 On() 事件函数。

它可以在没有回调的情况下工作。

var paper = Raphael('svgContainer', w, h);

这里是关于这个问题的小提琴: jsfiddle.net/svb0y2un/

【问题讨论】:

    标签: raphael


    【解决方案1】:

    我不太确定您的意图代码无效,因为您在回调之外发出警报,因此可能未定义纸张(因为之后可能会调用回调)。

    我“认为”您需要了解回调函数是作为函数的“上下文”传递给纸元素的。这意味着它将被传递到回调中的“this”变量中。因此,例如,这应该可以工作....

    var paper = Raphael('svgContainer', w, h, function(){
        console.log('callback');
        alert('working typeof of paper: '+typeof(this));
        this.setViewBox(0,0,w,h,true);
    });
    

    jsfiddle

    【讨论】:

    • 我的问题是 paper 在使用回调函数时不再是 Raphael 对象。我知道在回调 this 里面是 Raphael 对象。文档没有说使用回调函数时返回不同,它只说返回object。那么在使用回调函数的时候没有办法获取raphael对象吗?
    • 我认为这取决于您是希望它返回纸张(不可能 afaik),还是希望能够使用纸张的最终目标(可能)。例如jsfiddle.net/8wqsz4pc/1
    • 也许我对文档看起来总是Returns: object Paper 感到困惑,即使在使用回调或 onReadyCallback 函数时也是如此。事实并非如此 :) 所以谢谢你的小提琴。
    猜你喜欢
    • 2016-04-12
    • 2023-04-11
    • 2010-10-09
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多