PDA

Просмотр полной версии : Реализация 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-шки тоже "слышали". В чем причина? как это сделать?

etc
10.10.2006, 19:27
А почему ты не подписываешься внутри View на модель? Или ты не хочешь создавать ссылку на модель?

Nirth
10.10.2006, 19:32
this в первой строке ссылается на модель, а на что она ссылается в третьей строке?

NewMan_by
10.10.2006, 19:37
Nirth на View

NewMan_by
10.10.2006, 19:38
А почему ты не подписываешься внутри View на модель? Или ты не хочешь создавать ссылку на модель?
как ты предлагаешь подписыватся?

Nirth
10.10.2006, 19:40
так если ты подписываешься на событие модели, то выглядеть должно так

myModelInstance.addEventListener("eventType",this.handler);

etc
10.10.2006, 19:41
как ты предлагаешь подписыватся?
Написать IoC-контейнер и связать View с Model.
Но, я думаю, это лишнее…
И вообще, если ты использовал EventDispatcher в AS2, то работа с ним в AS3 мало отличается. Просто там нужно посылать не объект со свойствами, а наследник Event (или сам Event, если спец. свойств не нужно).

NewMan_by
10.10.2006, 20:03
сделал во View

this.model.addEventListener("customEvent", this.init);

не помогло

etc
10.10.2006, 20:06
this.init — что это? Что есть this? Что есть this.model?

Nirth
10.10.2006, 20:08
я написал примерный-абстрактный код, использовать его as is слегка наивно, покажи листинг модели, контролера и представления, хотя мне кажется там модель-делегат а не вид и контроллер, я прав?

NewMan_by
10.10.2006, 20:11
this.init — что это? Что есть this? Что есть this.model?
this есть View, this.model - есть Model(модель)

etc
10.10.2006, 20:14
А this.init?

NewMan_by
10.10.2006, 20:20
Спасибо, Nirth, код был верный

this.model.addEventListener("customEvent", this.init);

Я просто диспатчил событие в Модели раньше, чем подписал на него View.
Еще раз огромное спасибо вам друзья Nirth and __etc:)