1

尝试使用框架构建一些简单的应用程序并有一个问题:

  • 是否可以View在分层布局中找到?如何 ?(在飞镖)

    Rikulo 网站上有一些关于 IdSpace 的文档,我不太了解如何使用它。应该延长ViewIdSpace?还是View会自动生成 Id ?

更新(添加代码示例)

/*
* 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);
}

vButton处理点击事件时在 dart.app 的另一个地方。我怎么能找到(在代码中)vLogoView ?

4

2 回答 2

0

当然,与 Element 一样,View 提供基于 CSS 选择器的检索,称为queryqueryAll。您可以在检索 DOM 元素时使用它们来检索视图。

一般来说,你不必担心 IDSpace,除非你想在不同的视图中使用相同的 ID。层次结构树本身就是一个 ID 空间。如果一个视图实现了 IDSpace,它就形成了另一个 ID 空间。

于 2013-04-24T04:27:38.923 回答
0

在代码中检索 View 的最简单方法是给它一个 id:

View vLogo = new View();
vLogo.id = "vLogo";

然后,在您的事件侦听器中,使用查询来访问它:

button.query("#vLogo"); // returns vLogo

但是,在您的情况下,您将能够在事件侦听器闭包中直接访问 vLogo 实例。

于 2013-04-25T01:56:54.367 回答