0

我有一个要在激活非文件夹节点时显示的图像。

  1. 展开文件夹节点。
  2. 单击非文件夹节点,该节点的图像将不会按预期显示。
  3. 单击与上一步中的节点不同的节点,然后单击上一步中的节点,该节点的图像将按预期显示。

由于某种原因,一个节点的图像将不会显示,直到该onActivate节点的事件至少被触发两次(即通过访问另一个节点,然后返回到有问题的节点)。

我尝试了几种方法来解决这个问题。对我有用的唯一方法是使用onRender事件处理程序而不是onActivate,但这会大大降低生产中树的速度(在任何给定时间可能显示 5000 多个节点)。

我也相信我已经遵循了@pimvdb在他对此处此处的类似问题的回答中提供的所有建议,但无济于事。我曾尝试src在声明onload函数之前和之后设置图像,但这似乎并不重要。

任何指针将不胜感激。

jsFiddle

丹特里

PS 在您看到此问题后,您可能需要清除缓存才能再次看到它。

4

1 回答 1

0

显然图像加载正常,问题是我如何/何时调整图像的画布大小。 是一个带有修复程序的 jsFiddle。我改了这个...

function loadImage(node) {
    var imageObj = new Image();
    imageObj.onload = function() {
        ctx.drawImage(imageObj, 0, 0);
    };
    imageObj.src = node.data.imageUrl;

    canvasObj.attr("height", imageObj.height + "px");
    canvasObj.attr("width", imageObj.width + "px");
}

对这个...

function loadImage(node) {
    var imageObj = new Image();
    imageObj.onload = function() {
        canvasObj.attr("height", imageObj.height + "px");
        canvasObj.attr("width", imageObj.width + "px");
        ctx.drawImage(imageObj, 0, 0);
    };
    imageObj.src = node.data.imageUrl;
}
于 2013-08-06T17:09:36.727 回答