Просмотр полной версии : Реализация MVC
NewMan_by
10.10.2006, 19:21
Переделываю проект с AS2 на AS3, проект сделан по принципу Model-View-Controller. Необходимо, чтобы наша модель рассылала события View-шкам и при это ничего не знала об этих вьюшках.
Проблема в том, что если я делаю в модели
this.dispatchEvent(new Event("customEvent"));
// а в классе View
this.addEventListener("customEvent", this.init);
То есть "слышит" это событие только сам класс в котором я это делаю, а мне нужно чтобы мои View-шки тоже "слышали". В чем причина? как это сделать?
А почему ты не подписываешься внутри View на модель? Или ты не хочешь создавать ссылку на модель?
this в первой строке ссылается на модель, а на что она ссылается в третьей строке?
NewMan_by
10.10.2006, 19:37
Nirth на View
NewMan_by
10.10.2006, 19:38
А почему ты не подписываешься внутри View на модель? Или ты не хочешь создавать ссылку на модель?
как ты предлагаешь подписыватся?
так если ты подписываешься на событие модели, то выглядеть должно так
myModelInstance.addEventListener("eventType",this.handler);
как ты предлагаешь подписыватся?
Написать IoC-контейнер и связать View с Model.
Но, я думаю, это лишнее…
И вообще, если ты использовал EventDispatcher в AS2, то работа с ним в AS3 мало отличается. Просто там нужно посылать не объект со свойствами, а наследник Event (или сам Event, если спец. свойств не нужно).
NewMan_by
10.10.2006, 20:03
сделал во View
this.model.addEventListener("customEvent", this.init);
не помогло
this.init — что это? Что есть this? Что есть this.model?
я написал примерный-абстрактный код, использовать его as is слегка наивно, покажи листинг модели, контролера и представления, хотя мне кажется там модель-делегат а не вид и контроллер, я прав?
NewMan_by
10.10.2006, 20:11
this.init — что это? Что есть this? Что есть this.model?
this есть View, this.model - есть Model(модель)
NewMan_by
10.10.2006, 20:20
Спасибо, Nirth, код был верный
this.model.addEventListener("customEvent", this.init);
Я просто диспатчил событие в Модели раньше, чем подписал на него View.
Еще раз огромное спасибо вам друзья Nirth and __etc:)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.