идея для взаимодействия 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: , , , ,

Также рекомендую к прочтению:

2 Responses to “идея для взаимодействия JS и DOM объектов”

  1. Chiffa Says:

    А просто бэк-референс хранить?

    var JSobj = new Obj(); //пораждающий объект
    var childObj = JSObj.createDomObj();

    childObj.parent = JSobj;
    childObj.getParent = function(){ return this.parent; }

  2. Алексей Токарь Says:

    к сожалению обратный вызов из DOM таким образом не прокатит… хотя можно воспользоваться и eval для получения из свойства имя объекта, но хеш-таблица (спасибо за подсказку ;) ) все же остается более приятным вариантом…

Leave a Reply

Введите следующие символы: