Где ExtJS Action вписывается в шаблон MVC - PullRequest
7 голосов
/ 23 марта 2012

Мне очень нравится концепция ExtJS Actions.Я посмотрел на этот пример , и это (почти) именно то, что мне нужно.Единственное, что я пытаюсь использовать шаблон MVC.У меня есть:

  • Счет-фактура (просмотр)
  • Счет-фактура (контроллер)
  • Счет-фактура (модель)
  • Счет-фактура (магазин)

Где и как я могу дать определение Действию?Должны ли они быть в контроллере?Как звонить им и ссылаться на них?Мне нужно несколько действий, и они будут в контекстном меню и в меню на панели инструментов invoicelist.

Ответы [ 2 ]

6 голосов
/ 24 марта 2012

Хороший вопрос. Похоже, действия нарушают паттерн MVC, объединяя парадигмы View и Controller под одной крышей. Поскольку у них есть обработчики, они несут с собой функциональность, а также элементы пользовательского интерфейса, такие как текст и значки. Однако они не являются компонентами - в ExtJS смысле этого слова. Следовательно, вы не можете нацелить их с помощью селектора.

Лучший способ думать о них как об объекте конфигурации. Не больше, не меньше. Объект конфигурации сам по себе не имеет смысла и не может быть целью. То же самое с действиями. Они могут фактически использоваться как объект конфигурации для кнопок, например.

Теперь, куда они должны идти? Я думаю, что ответ на этот вопрос действительно зависит от вас, как от дизайнера. Поскольку они не соответствуют строгому шаблону MVC, вы можете принять решение, основываясь на том, насколько широко вам нужно, чтобы конкретное действие было доступно. Для действительно глобального действия, которое разделяют многие представления, вы можете даже поместить его в конфигурацию приложения: например, MyApp.app.actions ["delete"]. Контроллер может быть хорошим местом для его установки, если этот контроллер настроит несколько представлений и соединит их вместе с хранилищами. Они могут соединить несколько представлений с общими действиями.

Надеюсь, это поможет. Удачи:)

1 голос
/ 26 марта 2012

просто сделай someview.fireEvent('Yourcustomevent');

...