Где должно храниться состояние модели в Angular.js

Нахожу Угловойиспользование моделей сбивает с толку. Кажется, что Angular придерживается подхода, согласно которому модель может быть чем угодно, т.е. Angular не включает явный класс модели, и вы можете использовать ванильные объекты JavaScript в качестве моделей.

Почти в каждом угловом примере яВидно, что модель фактически является объектом, либо созданным вручную, либо возвращенным из вызова API через Ресурс. Потому что почти каждый угловой примерВыглядит просто, обычно данные модели хранятся в $ scope в контроллере, и любое состояние, связанное с моделью, например выбор, также сохраняется в $ scope в контроллере. Это хорошо работает для простых приложений / примеров, но это выглядит как упрощение, когда приложения становятся более сложными. Состояние модели, хранящееся в контроллере, рискует стать контекстным и потеряться, например, при изменении контекста; Контроллер храненияselectedGallery а такжеselectedPhoto может хранить только глобальныйselectedImageнеselectedPhoto за галерею. В такой ситуации использование контроллера на галерею может устранить эту проблему, но может показаться расточительным и, вероятно, неуместным и ненужным с точки зрения пользовательского интерфейса.

Угловая»Определение моделей кажется более близким к тому, что я бы назвал VO / DTO, который является тупым объектом, передаваемым между сервером и клиентом. Мой инстинкт заключается в том, чтобы обернуть такой объект в то, что я бы назвал Моделью - класс, который поддерживает состояние, относящееся к DTO / VO (например, к выбору), предлагает мутаторы, необходимые для манипулирования DTO / VO, и уведомляет остальную часть применение изменений к базовым данным. Очевидно, что об этой последней части хорошо заботится Angular 's привязки, но я все еще вижу сильный вариант использования для первых двух обязанностей.

Однако я не имеюЯ действительно не видел эту модель, использованную в примерах, которые яЯ смотрел, но я также не видел того, что я бы назвал масштабируемой альтернативой. Похоже, что Angular не рекомендует использовать Services в качестве моделей, применяя Singletons (я знаю, что есть способы обойти это, но они этого не делают).кажется, широко используется или одобрен).

Итак, как мне сохранять состояние данных модели?

[Редактировать] Второй ответ вэтот вопрос интересно и близко к тому, что ям в настоящее время использую.

Ответы на вопрос(3)

Ваш ответ на вопрос