Durandal – Pub/sub – когда убирать подписки

Наше приложение Durandal имеет много модульных компонентов пользовательского интерфейса (все они созданы с использованием моделей представления на основе конструктора AMD), и я хотел бы начать добавлять сообщения pub/sub. Мне нужно определить наилучший способ обеспечить правильную «очистку» подписок.

Когда/как следует очищать эти подписки?

Событие deactivate кажется достаточным для нескольких избранных моделей представления, но как насчет остальных? Я не вижу конкретного механизма, который позволил бы модели представления надежно «убирать» за собой.

Прежде чем я приступлю к реализации какого-то одноразового шаблона, есть ли какой-то очевидный подход, который мне здесь не хватает?

Последующий вопрос: нужно ли что-то сделать, кроме вызова метода subscribe.off() для правильной очистки?


person Shaun Rowan    schedule 19.01.2014    source источник


Ответы (1)


Вызов subscription.off() из deactivate при работе с моделями представления или из detached при работе с виджетами должен быть всем, что требуется. В системе событий есть набор тестовых случаев https://github.com/BlueSpire/Durandal/blob/master/test/specs/events.spec.js#L240, который можно использовать в качестве основы для собственного тестирования.

person RainerAtSpirit    schedule 19.01.2014
comment
Как хороший ответ любой я полагаю. Эти подходы не очень хорошо работают для не-виджетов, которые не участвуют в маршрутизации (что представляет собой массу вариантов использования). - person Shaun Rowan; 23.01.2014
comment
Это не имеет ничего общего с маршрутизацией как таковой. Пока представления создаются активатором (durandaljs.com/documentation/Using-Activators ), либо с помощью router, либо путем создания собственного вручную deactivate будет вызываться. Не стесняйтесь создавать варианты использования, используя github.com/dFiddle/dFiddle-2.0 для тех, были ли это в настоящее время не работает. - person RainerAtSpirit; 24.01.2014