Итак, enyo.ViewController по умолчанию хочет визуализировать в document.body, и мы используем его для определения вида enyo.Application как «отправной точки» для вашего приложения.
Реализация Enyo не обязательно является «чистым» MVC в том смысле, что вам необязательно иметь правильный контроллер для каждого вида (или enyo.Control), с которым вы имеете дело. У Enyo всегда была своего рода гибридная система просмотра/контроля, запеченная в самих элементах управления.
С учетом сказанного, последние изменения в реализации устраняют пузырьки событий на «контроллер», который владел вашим «представлением», поскольку это привело к множеству ненужных накладных расходов. Фактически, мы удаляем блок «контроллеров» из вида enyo.Application как глобальную ссылку приложения на различные контроллеры, и вместо этого вы поместите их в блок компонентов, как типичный для «традиционной» разработки Enyo.
Итак, текущее мышление заключается в том, что ваше представление будет обрабатывать события по-прежнему, но вы можете привязываться к свойствам различных «контроллеров» и моделей.
Теперь вы можете создать архитектуру MVC, если вы действительно хотите, но система является достаточно гибкой, чтобы поддержать какой-либо из «разделения проблем» методологий (MVC, MVP, MVVM и т.д.)
Мой текущий способ сделать это - создать «контроллер» для выполнения некоторых действий (например, сделать запросы веб-сервисов), а затем собрать модели из возвращаемых данных, добавить их в коллекцию, а затем мои представления, вероятно, будут иметь контроль данных (например, enyo.DataRepeater или enyo.DataList), который автоматически генерирует несколько строк для каждой модели.
Взгляните на этот простой пример: http://github.com/clinuz/college-football, но, пожалуйста, не обновляйте его с помощью переключателей от обычных контроллеров до компонентов. Кроме того, мы удаляем свойство «controller» DataRepeater/List, и оно изменится на «collection».
Дайте мне знать, если вам нужны еще несколько советов. Мы понимаем, что отсутствие документации затрудняет процесс завершения нашей реализации. Пожалуйста, не стесняйтесь!
Большое спасибо, sugardave! Мне удалось заставить его работать, просто добавив весь контроллер к родительскому представлению и установив свойство «view» в этом контроллере. – mico
Я проверил ваш пример, и у меня есть несколько вопросов по этому поводу: 1. Существует свойство «controllerlers», которое ссылается на табло, которая является моделью, а не контроллером. 2. В этом примере нет ViewControllers или Controller. Должен ли я использовать их? – mico
Это действительно будет сводиться к вашим конкретным потребностям. Возможность привязать свойство любого компонента к свойству свойств любого другого компонента отрицает необходимость наличия массива «контроллеров» в этом основном приложении приложения, поэтому упоминание о том, что оно изменится только как компонентный блок в виде приложения. Технически, в этом приложении есть ONE ViewController (основное приложение, как enyo.Application распространяется от enyo.ViewController) – sugardave