2009-07-23 6 views
0

Интересно, может ли кто-нибудь из вас, ребята, помочь мне с тем, что, по моему мнению, является проблемой для наблюдения.Выполнить метод каждый раз, когда значение изменяется

У меня есть элемент (svg, который будет более конкретным), который я хочу обновлять каждый раз, когда значение где-то изменяется.

У меня есть переменная: GetThreadTree().treeBoxObject.getFirstVisibleRow(), которая изначально равна 0. Я хочу запустить function updateCanvas() при каждом изменении значения GetThreadTree().treeBoxObject.getFirstVisibleRow().

Что у меня есть:

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

Одним из способов решения этой проблемы является:

var registeredRow = 0; 

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

А до квадратно называется:

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

Но это не самое элегантное решение, но оно работает;)

2

Вы не в том месте, где находится логика. Когда вы обновляете свою ценность, что когда-либо это нужно сделать в одном месте с помощью функции, что-то вроде treeBoxObject.IncrementRow() или аналогичного.

Тогда вы можете запустить эту функцию, например, onTreeBoxRowIncremented. Это событие - это то, что вы слушаете, когда это изменится, вы можете сделать свой чек и обновить все, что захотите.

Извините странные имена функций, просто пытаясь использовать то, что у вас есть.

 Смежные вопросы

  • Нет связанных вопросов^_^