1

フレームワークを使用して簡単なアプリを作成しようとしていて、質問があります。

  • View階層レイアウト内を見つけることは可能ですか? そしてどうやって ?(ダーツで)

    Rikulo のサイトに IdSpace に関するドキュメントがいくつかありますが、使い方がよくわかりませんでした。拡張Viewする必要がありIdSpaceますか? それともViewId を自動生成しますか?

更新 (コード例を追加)

/*
* 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 はqueryおよびqueryAllと呼ばれる CSS セレクター ベースの検索を提供します。これらを使用して、DOM 要素を取得するときにビューを取得できます。

一般に、異なるビューで同じ ID を使用する場合を除き、IDSpace について心配する必要はありません。階層ツリー自体が ID 空間です。ビューが IDSpace を実装する場合、別の ID スペースを形成します。

于 2013-04-24T04:27:38.923 に答える
0

コードでビューを取得する最も簡単な方法は、id を与えることです。

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

次に、イベント リスナーでクエリを使用してアクセスします。

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

ただし、あなたの場合、イベント リスナー クロージャ内で vLogo インスタンスに直接アクセスできます。

于 2013-04-25T01:56:54.367 に答える