2009-07-23 7 views
0

問題を抱えていると思っている人がいらっしゃいますか?毎回値を変更してメソッドを実行する

私は、どこかの値が変更されるたびに更新したい要素(より具体的にはsvg)を持っています。

私は変数があります。 GetThreadTree().treeBoxObject.getFirstVisibleRow()当初、私はGetThreadTree().treeBoxObject.getFirstVisibleRow()変化のfunction updateCanvas()たびに値を実行したい0です。

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

しかし、それは、それが最初に呼ばれていたときに、一度だけupdateCanvas()を呼び出し、何らかの理由で後にあるコードを実行しません。私が持っているもの

です。私はエラーコンソールをチェックして何もありません。

アイデア?

+0

は、このヘルプをい:http://stackoverflow.com/questions/240592/is-it-possible-to-listen-for-changes-to-an-objects-attributes-in-javascript –

+0

また、プラットフォームは何ですか?ブラウザ? Javascriptのバージョン? –

+0

それは助けにはならない、効果はまだ私の問題のようです。 Thunderbird 3.0b4pre用ですので、JavaScriptのバージョンが最新のものだと思います。 – Artur

答えて

0

この問題を解決する1つの方法は次のとおりです。

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(); 

しかし、それは最もエレガントな解決策ではないのですが、それは動作します。)

2

ロジックが間違っています。あなたが価値を更新するときには、これは関数によって、ある場所で処理する必要があります。これは、treeBoxObject.IncrementRow()などのようなものです。

次に、onTreeBoxRowIncrementedのようなイベントを発生させることができます。そのイベントは、あなたが何を聞いているのですか?それが変わると、あなたは好きなものをチェックして更新することができます。

あなたが持っているものだけを使用しようとしている奇妙な関数名を除いてください。

関連する問題