Style
От: cgibin  
Дата: 02.07.09 04:17
Оценка:
Привет.

Как можно сделать поведение, подобное объекту Style? Т.е пишем
persistentStyle["background-color"] = color("red");
меняем стиль и заодно что-то делаем(например, где-то сохраняем). Т.е аналог undefined property handler, но не property. Хочется сохранить одинаковый синтаксис.
Re: Style
От: c-smile Канада http://terrainformatica.com
Дата: 02.07.09 15:58
Оценка:
Здравствуйте, cgibin, Вы писали:

C>Привет.


C>Как можно сделать поведение, подобное объекту Style? Т.е пишем

C>persistentStyle["background-color"] = color("red");
C>меняем стиль и заодно что-то делаем(например, где-то сохраняем). Т.е аналог undefined property handler, но не property. Хочется сохранить одинаковый синтаксис.

Get/SetItem by index это очень low level операция. Делать для неё undefined item handler не представляется возможным.
Да и чем он тебе поможет-то? Есть два случая: модификация существующего member и добаление нового.
Re[2]: Style
От: cgibin  
Дата: 02.07.09 16:59
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Get/SetItem by index это очень low level операция. Делать для неё undefined item handler не представляется возможным.

Тады ой Будем по-старинке — saveStyle(name, value)
CS>Да и чем он тебе поможет-то? Есть два случая: модификация существующего member и добаление нового.
Да, тут всё же речь идёт о возможности подписки на операции Get/SetItem by index
Re[3]: Style
От: yarus23  
Дата: 02.07.09 19:55
Оценка:
Здравствуйте, cgibin, Вы писали:

C>Здравствуйте, c-smile, Вы писали:


CS>>Get/SetItem by index это очень low level операция. Делать для неё undefined item handler не представляется возможным.

C>Тады ой Будем по-старинке — saveStyle(name, value)
CS>>Да и чем он тебе поможет-то? Есть два случая: модификация существующего member и добаление нового.
C>Да, тут всё же речь идёт о возможности подписки на операции Get/SetItem by index

Ну зачем по старинке. А давай забабахаем прокси класс:
class StyleProxy
{
   function this(obj)
   {
     this.obj = obj;
   }
   
   function commit()
   {
      // commit and save
      for(i in this)
      {
         if( obj[i]] )
         {
            saveStyle(i.toString(), this[i]);
            obj[i] = this[i];
         }
      }
   }
}


потом:

var persistentStyle = StyleProxy(realStyle);
persistentStyle["background-color"] = color("red");
persistentStyle.commit();

Не проверял, но схема приблизительно такая.
Re[4]: Style
От: Ухты  
Дата: 02.07.09 22:34
Оценка:
Здравствуйте, yarus23, Вы писали:

Y>Ну зачем по старинке. А давай забабахаем прокси класс:


Да забабахать можно, только ведь профита всё равно нет — мне нужно именно в момент присвоения что-нибудь своё исполнить. А для просто складирования бы завёл объект-мембер, и всё бы в него, гхм... клал
Re[5]: Style
От: cgibin  
Дата: 02.07.09 22:42
Оценка:
Аргх, и ещё кое-кто куки не почистил
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.