12

StateManager в Ember.js еще не все хорошо документировано, поэтому у меня есть некоторые вопросы относительно его использования.Лучшая практика в отношении StateManager в Ember.js

  1. Следует ли стремиться позвонить по номеру .goToState только с государственным менеджером?
  2. Иногда я нахожу себя зеркальным методом в диспетчере состояний на вид, например. save: -> StateManager.send("save"). Это имеет смысл или я чего-то не хватает?
  3. Должны ли все модификации моделей (в общем) проходить через государственного менеджера?
  4. Если одно представление имеет разные состояния, должно быть смоделировано с использованием ViewState с дочерними состояниями, или я должен использовать рассчитанные свойства и свойства представления для хранения этой информации только в представлении (без управления государственным менеджером внутреннего состояния представлений) ? *

* Одним из примеров может быть трехэтапная форма, в которой один и тот же шаблон используется для всех состояний, но разные области отображаются/скрыты в трех шагах.

Github ссылка: https://github.com/emberjs/ember.js/tree/master/packages/ember-states/lib

+0

С нетерпением жду обратная связь вы получите по этому вопросу. Все примеры, которые я могу найти в интерфейсах, слишком упрощены. Опять же, в Ember.js все так неожиданно, я уверен, что любые методы, которые вы и я придумали, «правильны», пока они работают :) (Я в настоящее время отказываюсь/переписываю постоянно растущее приложение моего для использования StateManager. Он работает хорошо, но я, как и вы, не уверен, что я делаю «правильно»). – jeremyosborne

ответ

6

Следует ли стремиться позвонить .goToState только из штата ?

Возможно. Я не знаю этого наверняка, но мне кажется, что, поскольку государственный менеджер знает, в каком состоянии вы находитесь, это место для обеспечения правового перехода состояния. Если вы вызывали .goToState из-за пределов государственного менеджера, вы делаете это, не зная, в каком состоянии вы находитесь, и хотя иногда это нормально (может быть, это состояние, которое вы действительно можете достичь из любого другого штата), это не большая привычка

Я иногда нахожусь в зеркальном отражении в состоянии Менеджер на вид, например save: -> StateManager.send ("save"). Имеет ли смысл , или я что-то упускаю?

Мне нравится, что панграц должен сказать об этом.

Должны ли все модификации моделей (в общем) проходить через государственного менеджера?

Способ использования государственных карт, нет. Однако я видел, что некоторые люди, использующие карты состояния, почти полностью заменяют уровень контроллера, и если это так, как вы работаете, то да, это должно пройти через диспетчер штата. Шаблон должен избегать прямого манипулирования моделями из представлений; будь то уровень контроллера или менеджер состояния между ними, кажется мне спорным.

Способ использования графиков состояний, однако, для управления состоянием приложения выполняется государственный менеджер. Он может играть в диспетчере трафика для модификации моделей, если эта модификация изменит состояние приложения (например, если во время обновления есть индикатор прогресса), но мне кажется, что обновление модели не является частью его мандата; они принадлежат контроллерам.

Если один вид имеет различных состояний, следует, что быть смоделирован с помощью ViewState с детьми состояний, или я должен использовать вычисляемые свойства и просматривать свойства держать эту информацию только в целях (без государственного менеджера знание внутреннего состояния взглядов)?

Я думаю, что государственный менеджер должен знать (или должен знать) внутреннее состояние представления.

Из любопытства вы исходите из фона веб-разработки или фона для разработки настольных/мобильных приложений? Я пришел из веб-разработки, и диаграммы состояний стали для меня новой концепцией. Мне было очень полезно читать the canonical State Chart paper Дэвидом Харелом ('ware PDF!). Это удивительно читаемо для академической статьи и излагает концепцию базового состояния, большую часть мира SproutCore/Ember использует с конца 2010 года (то есть это то, что имел в виду у Michael Cohen, когда он писал Ки.)

+2

Дополнительная ссылка: Замороженный Canuck aka Майкл Коэн Statechart против Controller http://frozencanuck.wordpress.com/2011/03/09/sproutcore-statecharts-vs-controllers/. Хотя для SproutCore это по-прежнему действительный ресурс. – pangratz

+0

С веб-разработки фоне. – sandstrom

+0

Тогда бумага Хареля, или книга Яна Хоррокса (если вы найдете ее по разумной цене), вам очень помогут. – pjmorse

6

Что касается вашей точки :

Я иногда ловлю себя на зеркалирование методы государственного менеджера по мнению, например, save: -> StateManager.send("save"). Это имеет смысл или я чего-то не хватает?

Вы можете использовать action помощник в шаблоне рули и установить StateManager в target

{{action "send" target="App.stateManager"}} 

И send событие отправить на свой App.stateManager.

Смежные вопросы