|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Можно ли как-то в оверрайде изменить кол-во принимаемых параметров функции?
Короче запилил гломурную систему автообновления моделей при получении данных с сервера.
Строится дерево моделей, данные плюются в корневую и она рекурсивно обновляет всё что внутри нее. /** * Пропихивает данные полученные с сервера по веткам моделей. * @param data */ protected function updateData(data:Object):void { for (var key:String in data) // проходим по каждому ключу данных { if (_data.hasOwnProperty(key)) // если в дате есть такой ключ { if (_data[key] is BaseDataModel) // и если этот ключ является BaseDataModel { _data[key].updateData.call(this, data[key]) // значит в нем должен быть метод автоапдейта. Запускаем его } else { _data[key] = data[key]; // Иначе данные принимаем за базовый тип и просто приравниваем } } else // если же такого ключа нету { updateNoKey(key, data[key]); // то запускаем функцию занимающуюся обновлением без ключей. } update(key); // Кричим во вьюху что изменили параметр. } } /** * Оверрайдим там где надо. * @param key * @param data */ protected function updateNoKey(key:Object, data:Object):void { trace(key); _data[key] = data; } Не конает только в том случае если данные вот здесь: updateData(data:Object) являются одним параметром из словаря по иду. Ну т.е. вот словарь: { "users": { "bdc2f7d3e41640da8c66722641387b3e": { "ingame":"36e0e36b-d404-4178-9979-daf6cf1a5a69" }, "f44f40619a8f4865972ac5df06387aef": { "ingame":false }, "3ce5ab7aa4674235ab36f857f5f2227d": { "ingame":"36e0e36b-d404-4178-9979-daf6cf1a5a69" } } } Пихаем вот это: "3ce5ab7aa4674235ab36f857f5f2227d":// Вот этот кусок, тобишь ид как таковой мы в принимаемом обжекте не видим {// а видим только его значение. "ingame":"36e0e36b-d404-4178-9979-daf6cf1a5a69" } И это надо довольно-таки редко. Потому вводить ид в базовый класс ради парочки ситуаций неохота. Было бы удобно оверрайдить функцию автоапдейта и чтоб она еще и ид принимала и что-то там нахимичить. Но оверрайд соответственно должен быть клоном того что именно мы оверрайдим. Пока что не вижу решений кроме как задать какой-то дефолтный ид даже там где его не надо, и чтоб и дальше автоматом делалось так как сейчас делается.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
Спасибо Кеп. Я об этом писал:
Цитата:
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
То что вы хотите называется перегрузкой методов, и в AS3 такого нет. Можно ещё выкрутиться так:
|
Часовой пояс GMT +4, время: 22:22. |
|
« Предыдущая тема | Следующая тема » |
|
|