В шаблоне MVC, как лучше всего избегать вызовов контроллера в моем классе представления? - PullRequest
0 голосов
/ 30 августа 2018

Я использовал RaphaelJS для рисования фигур на холсте. После рисования мне нужно добавить прослушиватель событий для каждой фигуры. Самый простой способ сделать это - использовать что-то вроде этого:

    sym.click((e)=>{
        this._controller.responseFunction(e);
    });

Это не страшно, но это значит, что моему взгляду всегда нужны знания моего контроллера. Есть ли лучший способ добавить слушателей событий?

1 Ответ

0 голосов
/ 30 августа 2018

Идея в вашем сценарии с шаблоном публикации подписки:

sym.click((e) => {
   pubSub.fireEvent('sym.click', ...yourArguments)
});

Тогда в вашем контроллере вы будете слушать:

pubSub.subscribe('sym.click', myhandlerFunction)

Где myhandlerFunction - функция, обрабатывающая событие с предоставленными аргументами.

Таким образом, вашему представлению не нужно будет иметь фактическую ссылку на ваш контроллер, и оно будет более разобщенным. Единственная ссылка, необходимая в этом сценарии, - это механизм pub-sub.

Вы можете реализовать этот механизм самостоятельно (множество примеров в Интернете) или использовать такую ​​библиотеку, как pubsubjs , publish-subscribe-js и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...