ExtJS4 MVC - передать данные в детальную форму - лучшие практики - PullRequest
0 голосов
/ 08 декабря 2011

Я начал разрабатывать прототип в ExtJS4, следуя их новому шаблону MVC. У меня есть основная форма (клиенты) со списком клиентов (сетка) и форма сведений, двойной щелчок по строке в сетке открывает форму сведений. В настоящее время я сделал в контроллере для мастер-формы, как это:

var view = Ext.widget('CustomerDetailsView');
view.show();

Но мне также нужно передать идентификатор клиента в форму сведений, чтобы форма данных загружала дополнительные данные для клиента. В простом примере приложения MVC на веб-сайте Sencha это выполняется:

view.down('form').loadRecord(selectedRecord);

Итак, насколько я понимаю, это то, что представление подробностей загружается с полной записью из основного представления. Во-первых, у моего представления сведений есть свой собственный контроллер и хранилище, а во-вторых, это не похоже на правильный способ связи между представлениями.

  • Разве главный контроллер не должен каким-то образом вызывать контроллер деталей?
  • в другом посте здесь было предложено использовать события для всего этого общения между представлениями / контроллерами, но я не уверен, что имеет смысл создавать все эти события всего приложения только для простого мастера / детали связь

Каков рекомендуемый способ передачи данных дочернему представлению / контроллеру в шаблоне приложения ExtJS4 MVC?

1 Ответ

1 голос
/ 09 декабря 2011

Здесь нет ни одного "правильного" способа сделать что-то.Это действительно ваше дело, чтобы структурировать ваше приложение, которое имеет больше смысла.Вам не нужно иметь один контроллер для одного представления.На самом деле, я бы сказал, что один контроллер должен отвечать на события из нескольких представлений как общее правило.Конечно, если у вас очень сложные представления и ваш класс контроллера выходит из-под контроля - непременно разбейте его.

Теперь, чтобы ответить на ваши вопросы:

  1. Да, вы можете разговаривать с одним контроллером с другим: с главного контроллера - this.getController('DetailsController').doSomething();

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

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