Как найти вид с идентификатором
Попытка создать простое приложение с фреймворком rikulo и задать вопрос:
Можно ли найти
View
внутри иерархического макета? и как? (в дротике)На сайте Rikulo есть некоторая документация по IdSpace, но я не совсем понял, как ее использовать. Должен ли я продлить
View
сIdSpace
? Или жеView
будет автоматически генерировать идентификатор?
Обновить (добавить пример кода)
/*
* Function will actualy build View
*/
void _buildUi(Element tagElement)
{
View mainView = new View();
mainView.profile.width = '100%';
mainView.profile.height = '100%';
mainView.layout.type = 'linear';
mainView.layout.orient = 'vertical';
mainView.style.cssText = "background: yellow;";
View vWorkSpace = new View();
vWorkSpace.profile.width = 'flex';
vWorkSpace.profile.height = 'flex';
vWorkSpace.layout.type = 'linear';
vWorkSpace.layout.orient = 'horizontal';
vWorkSpace.style.cssText = "background: red;";
//
// Left menu
View vLeftBar = new View();
vLeftBar.profile.width = "10%";
vLeftBar.profile.height = "10%";
vLeftBar.layout.type = 'linear';
vLeftBar.layout.orient = 'vertical';
vLeftBar.layout.spacing = '10';
View vLogo = new View();
vLogo.addChild(new Image('images/google_chrome.png'));
vLeftBar.addChild(vLogo);
Button vButton = new Button();
vButton.text = 'Sign in with Google';
vLeftBar.addChild(vButton);
vButton.on.click.add((e){ // Somehow I get an error here: Method 'add' not defined for class 'Stream'
broadcaster.send(new ViewEvent('foo'));
});
vWorkSpace.addChild(vLeftBar);
mainView.addChild(vWorkSpace);
mainView.addToDocument(ref: tagElement, layout: true);
}
В другом месте в dart.app при обработке vButton
событие клика. Как я мог найти (в коде) vLogo
Посмотреть?
2 ответа
Самый простой способ получить представление в коде - дать ему идентификатор:
View vLogo = new View();
vLogo.id = "vLogo";
Затем в слушателе событий используйте запрос для доступа к нему:
button.query("#vLogo"); // returns vLogo
Однако в вашем случае вы сможете получить прямой доступ к экземпляру vLogo в закрытии прослушивателя событий.
Конечно, как и Element, View обеспечивает поиск на основе селектора CSS, называемый query и queryAll. Вы можете использовать их для получения представления при получении элементов DOM.
В общем, вам не нужно беспокоиться об IDSpace, если вы не хотите использовать один и тот же идентификатор в разных представлениях. Само дерево иерархии является пространством идентификаторов. Если представление реализует IDSpace, оно формирует другое пространство ID.