идея для взаимодействия JS и DOM объектов
углабряясь в разработку Online MySQL DB Designer‘а, возникла проблема в обратном обращении DOM объектов к JS объектам, которые являются движущей моделью редактора. Собственно сама проблема выражается в том, что созданная из JS объекта DOM таблица (например) теряет любую связь со своим пораждающим объектом (JS).
Что бы было понятнее:
<script>
var JSobj = new Obj(); //пораждающий объект
JSObj.createDomObj(); //создание DOM объекта в браузере клиента (например <table>)
</script>
Так вот теперь этот <table> больше никак не знает кто его создал, а мне посредством взаимодейтсия с DOM необходимо динамически изменять объекты JS.
Решение, которое пришло сразу в голову: создать на уровне JS виртуальную сводную таблицу.
поля таблицы: id, JS object reference, cid of DOM object
а так же создать вспомогательный класс (еще не реализовал
), который будет:
- помещать в сводную таблицу соответствующую зависимисть
- сопоставлять и находить по переданому значению CID ссылку на JS объект, которым необходимо манипулировать
таким образом должно получиться решить возникшую проблему.
Возможно есть другие решения? Я был бы рад услышать что делаю глупость и давно есть нормальные принципы реализации подобного DOM-callback ![]()
UPD(25.01.2008): хе
именно то что нужно и именно так как я описал реализовали в mootools 1.2b
Спасибо разработчикам
Tags: DB Design, Javascript, MySQL, разработка, СУБД
Также рекомендую к прочтению:
Январь 11th, 2008 at 11:38
А просто бэк-референс хранить?
var JSobj = new Obj(); //пораждающий объект
var childObj = JSObj.createDomObj();
childObj.parent = JSobj;
childObj.getParent = function(){ return this.parent; }
Январь 11th, 2008 at 11:52
к сожалению обратный вызов из DOM таким образом не прокатит… хотя можно воспользоваться и eval для получения из свойства имя объекта, но хеш-таблица (спасибо за подсказку
) все же остается более приятным вариантом…