Рамка настроена так, что вы можете одновременно загружать несколько представлений (и предположительно связанных с ними контроллеров), но мне трудно писать правильный код контроллера, который «знает», где все.
Документация Titanium описывает использование в «$», как так:
Всех элементов пользовательского интерфейса, которые имеют идентификатор атрибут в представлении автоматически определяется и доступен как свойства префикса специальных переменными $ в контроллере , Значение $ является ссылкой на контроллер. ... Чтобы получить доступ к внешним контроллерам и представлениям, используйте методы Alloy.createController и Controller.getView, соответственно.
В документе Titanium также говорится, что в целом представления и контроллеры работают парами.
Предположим, у меня есть определенный вид, который содержит кнопку «назад», а другой вид - кнопка обновления. Дело в том, что эти представления содержат связанные контроллеры, которые должны работать независимо от того, в каком контексте я вхожу. Кнопка «Назад» должна всегда закрывать окно верхнего уровня, а кнопка обновления должна перезагружать данные основного вида, независимо от того, «Я смотрю.
Поэтому я создаю мастер-представление и загружаю в него эти два вида. Теперь у меня есть 3 View-Controllers, работающих вместе в одном контексте. Логика требует, чтобы кнопка «назад» знала, как закрыть своего родителя или даже делать дополнительные вещи в зависимости от того, откуда вы «возвращаетесь»; кнопка обновления, очевидно, должна знать, как получить доступ к данным родительского представления. Как я могу использовать '$' для кодирования, если я всегда ограничиваюсь одним контроллером? Для меня не имеет смысла, что я загружаю «внешние» контроллеры или представления, когда все 3 сущности работают в одном и том же месте.
$ это просто хороший ярлык для кодирования. Ваша проблема кажется немного более сложной. Не могли бы вы привести пример кода, показывающий, что вы пытаетесь сделать с вашими контроллерами и представлениями? – daniula
Спасибо, daniula. Это всего лишь общий вопрос, а не мой код. Наверное, я просто спрашиваю, какой общий подход мог бы сделать опытный разработчик сплавов. Если бы они просто не использовали $, это было бы достаточно для меня. – Brad
Я использую $ в каждом контроллере. Он позволяет получить доступ к вашим представлениям по их имени и экспортировать общедоступные методы, которые могут быть вызваны другим контроллером. – daniula