Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.01.2012, 18:54
Аватар для inst
Аспирант
Отправить личное сообщение для inst Посмотреть профиль Найти все сообщения от inst
 
Регистрация: 12.01.2012
Сообщений: 44

Слежение за объектом
Добрый день. Ищу совета.

Вкратце: как кроссбраузерно повесить слушатель изменений одного массива? Как это работает?

Подробности
Принцип такой: есть на HTML-странице некий изначально пустой ненумерованный список. Просто
<ul></ul>
И во время загрузки с сервера запрашивается JSON объект примерно такого вида:
{
	"item1": {
		"icon": "icon.png",
		"text": "Подпись значка"
	},
	"item2": {
		"icon": "icon2.png",
		"text": "Подпись другого значка"
	}
}

После обработки объекта в список добавляются все перечисленные пункты. Ссылка на этот массив сохраняется.

Теперь хочу сделать, чтобы все изменения, внесённые в этот массив автоматически отображались на список на странице.

В связи с этим вопрос: это же возможно? Всё что мне удалось найти своими силами это некий фреймворк tent, писанный каким-то дядей, но он мне показался слишком монструозным для такой задачи. Может существует что-то полегче, чего я не нашёл?
Ответить с цитированием
  #2 (permalink)  
Старый 12.01.2012, 19:10
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Просто сделайте свои ф-ции изменения этого объекта, которые будут вызывать обработчик.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #3 (permalink)  
Старый 12.01.2012, 19:23
Аватар для inst
Аспирант
Отправить личное сообщение для inst Посмотреть профиль Найти все сообщения от inst
 
Регистрация: 12.01.2012
Сообщений: 44

Да, такой вариант тоже рассматривается, но это на крайний случай.

Всё же хотелось бы что-нибудь наиболее простое с точки зрения результирующего API.
Ответить с цитированием
  #4 (permalink)  
Старый 12.01.2012, 19:26
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Это не крайний случай, это правильное решение)
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #5 (permalink)  
Старый 12.01.2012, 19:28
Аватар для KupueIIIKo
Профессор
Отправить личное сообщение для KupueIIIKo Посмотреть профиль Найти все сообщения от KupueIIIKo
 
Регистрация: 04.10.2011
Сообщений: 357

Сравнивать) того чего нет добавлять с помощью innerHTML то что пропало удалять если я правильно понял
Ответить с цитированием
  #6 (permalink)  
Старый 12.01.2012, 19:45
Аватар для inst
Аспирант
Отправить личное сообщение для inst Посмотреть профиль Найти все сообщения от inst
 
Регистрация: 12.01.2012
Сообщений: 44

Сообщение от trikadin Посмотреть сообщение
Это не крайний случай, это правильное решение)
Вероятно, это так, но выглядит довольно избыточно: добавить элемент списка, удалить, изменить его имя, иконку, текст, переместить в списке выше, ниже. Всё это лишние сущности, как мне кажется. А если структура объекта немного изменится?
Ответить с цитированием
  #7 (permalink)  
Старый 12.01.2012, 19:46
Аватар для inst
Аспирант
Отправить личное сообщение для inst Посмотреть профиль Найти все сообщения от inst
 
Регистрация: 12.01.2012
Сообщений: 44

Сообщение от KupueIIIKo Посмотреть сообщение
Сравнивать) того чего нет добавлять с помощью innerHTML то что пропало удалять если я правильно понял
Отчего же заниматься тем, с чем браузер теоретически и сам неплохо справляется?
Ответить с цитированием
  #8 (permalink)  
Старый 12.01.2012, 20:05
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от inst
Вероятно, это так, но выглядит довольно избыточно: добавить элемент списка, удалить, изменить его имя, иконку, текст, переместить в списке выше, ниже. Всё это лишние сущности, как мне кажется. А если структура объекта немного изменится?
Сделайте класс Menu, в нём сделайте методы changeIcon, changeText, moveToPosition... В этих методах добавьте вызов обработчика. А если структура объекта немного изменится - добавите новые методы. Это в любом случае лучше, чем менять св-ва объекта напрямую.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #9 (permalink)  
Старый 12.01.2012, 20:58
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Object.prototype.watch|unwatch - то что нужно, можно слушать изменение значений переменных
__________________
readOnly
Ответить с цитированием
  #10 (permalink)  
Старый 12.01.2012, 21:07
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

poorking, а можно поподробнее?
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблемка с объектом, POST запрос Ajax zercs jQuery 1 24.04.2011 19:06
options[...].text null или не явл. объектом в for zeloras Internet Explorer 5 04.12.2010 22:18
Работа с объектом style (CSSStyleDeclaration) Skipp Events/DOM/Window 10 22.05.2010 11:49
delete Команда не поддерживается объектом Gloft Internet Explorer 1 09.05.2010 17:43
Проблема с объектом Location KingKong Элементы интерфейса 8 24.10.2009 02:34