アーカイブ

‘dojo’ カテゴリーのアーカイブ

dijitコンテンツをネストしたときにイベントを親に渡したくない

2009 年 6 月 5 日
コメントは受け付けていません。

そんなとき、dojo.stopEvent(event)一発で可能です。

以下、ContentPaneをネストしたときに、onClickイベントを親に渡さない例です。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
<style type="text/css">
 @import "/js/dojo/resources/dojo.css";
 @import "/js/dijit/themes/tundra/tundra.css";
</style>
<script type="text/javascript" src="/js/dojo/dojo.js"
 djConfig="parseOnLoad: false, isDebug: true"></script>
<script type="text/javascript">
 dojo.require("dojo.parser");

 dojo.require("dijit.layout.BorderContainer");
 dojo.require("dijit.layout.ContentPane");

 dojo.addOnLoad(function() {
  dojo.parser.parse();
 });

</script>
<style type="text/css">
.nest {
 border: 1px solid #CCCCCC;
 margin: 5px;
}
</style>
</head>
<body class="tundra" id="body">
<div dojoType="dijit.layout.BorderContainer" design="screenDesign" style="width:100%;height:100%">

<div dojoType="dijit.layout.ContentPane" region="center" class="nest">
 topのトップ<br/>
 <script type="dojo/connect" event="onClick" args="event">
  alert("topのオンクリック");
 </script>
 <div dojoType="dijit.layout.ContentPane" class="nest">
  1つネスト
  <script type="dojo/connect" event="onClick" args="event">
   alert("1つネストのオンクリック");
   dojo.stopEvent(event);
  return false;
  </script>
  <div dojoType="dijit.layout.ContentPane" class="nest">
   2つネスト
   <script type="dojo/connect" event="onClick" args="event">
    alert("2つネストのオンクリック");
    dojo.stopEvent(event);
   return false;
   </script>
  </div>
 </div>
 topのボトム
</div>

</div>

</body>
</html>

admin dojo

dijit.Treeが変わってしまった

2009 年 6 月 5 日
コメントは受け付けていません。

久々にdijit.Treeを使ってみたら、FireBug上にエラーが・・・

dijit.Treeにdojo.data.ItemFileWriteStoreなどStoreを直結するのは古いらしい。

Modelというアダプタ?を使って、StoreとTreeを接続するのだそうだ。

Modelを調べてみると、dijit.tree.TreeStoreModelとdijit.tree.ForestStoreModelの2種類見つかりました。

TreeStoreModelはルートが1つだけ定義されているStoreに接続するのに対して、

ForestStoreModelはルートが複数あっても良いらしいです。

しかも、dojo1.1系からはStore用のデータがネストノードのものは推奨されないとも記述がありました。

ネストノードの場合、子ノードはユニークになってしまうので、

例えばファイルシステムのエイリアスをStoreで表現できません。

新しい方法では、子ノードの記述にリファレンスIDで指定できるため、ネストノードが要らなくなります。

スマートではありますが、通信用のXMLやJsonデータ自体の可読性は下がります。

将来性を考えると、dojo1.1系に合わせライブラリ作り直し・・・

admin dojo