0

我想知道你们中是否有人可以帮助我解决我认为观察问题的问题。

我有一个元素(更具体地说是 svg),每次更改某处的值时我都想更新它。

我有变量: GetThreadTree().treeBoxObject.getFirstVisibleRow()最初是 0。我想运行function updateCanvas()每次GetThreadTree().treeBoxObject.getFirstVisibleRow()更改的值。

我所拥有的是:

canvas.observe(GetThreadTree().treeBoxObject.getFirstVisibleRow(), "scroll", updateCanvas());

但是它只调用updateCanvas()一次,当它第一次被调用时,并且由于某种原因不执行它之后的代码。我检查了错误控制台,没有任何东西。

有任何想法吗?

4

2 回答 2

2

你的逻辑都在错误的地方。当您更新您的值时,需要通过一个函数在一个地方完成什么,比如 treeBoxObject.IncrementRow() 或类似的东西。

然后你可以让那个函数触发一个事件,比如 onTreeBoxRowIncremented。该事件是您所听的,当它发生变化时,您可以进行检查并更新您喜欢的任何内容。

原谅奇怪的函数名称只是试图使用你所拥有的。

于 2009-07-23T16:35:12.360 回答
0

解决这个问题的一种方法是:

var registeredRow = 0;

function checkRow(){
    var row = GetThreadTree().treeBoxObject.getFirstVisibleRow();
    if (registeredRow != row) {
        registeredRow = row;
        updateCanvas();
    }
    window.setTimeout(checkRow, 1);
}

在调用 checkRow 之前:

registeredRow = GetThreadTree().treeBoxObject.getFirstVisibleRow();
checkRow();

但这不是最优雅的解决方案,但它有效;)

于 2010-02-04T10:48:31.520 回答