基本的には、このようになります。Dojo ボイラープレート プロジェクト/テンプレート (Github から) を使用して、非常に構造化された Dojo アプリケーションを作成しています。アプリケーションをあるべき姿にするために、さまざまなモジュールをほぼすべて完成させました (cms のようなものです)。そのため、一部の領域でコンテンツを動的にレンダリングする単一ページ アプリケーションです。
私の EntryPoint.html は次のようになります。
<div style="height:100%;">
<div
data-dojo-type="dijit.layout.BorderContainer"
data-dojo-attach-point = "appLayout"
data-dojo-props="design: 'headline'"
style="height:100%;">
<div
class="centerPanel"
data-dojo-type="dijit.layout.ContentPane"
data-dojo-props="region: 'center'">
<button data-dojo-attach-point ="testButton" type="button" disabled="disabled">Click Me!</button>
<div id="placeholder"></div>
</div>
<div
class="edgePanel"
data-dojo-type="dijit.layout.ContentPane"
data-dojo-props="region: 'top'">Header content (top)
<span class="test"></span>
</div>
<div
id="leftCol" class="edgePanel"
data-dojo-type="dijit.layout.ContentPane"
data-dojo-props="region: 'left', splitter: true">
<div id="administrationMenu" class="administrationMenu">
<div class="administrationTitle"> Administration </div>
<ul>
<li><img border="0" src="file:///C:/Users/Dev 2/Desktop/mpact-dojo-boilerplate/src/app/resources/img/silver-gray/user.png" alt="Pulpit rock" width="24" height="24"/><a href="#"> Users </a></li>
<li><img border="0" src="file:///C:/Users/Dev 2/Desktop/mpact-dojo-boilerplate/src/app/resources/img/silver-gray/email.png" alt="Pulpit rock" width="24" height="24"/><a href="#"> Emails </a></li>
<li><img border="0" src="file:///C:/Users/Dev 2/Desktop/mpact-dojo-boilerplate/src/app/resources/img/silver-gray/tools.png" alt="Pulpit rock" width="24" height="24"/><a href="#"> Settings </a></li>
<li><img border="0" src="file:///C:/Users/Dev 2/Desktop/mpact-dojo-boilerplate/src/app/resources/img/silver-gray/graph.png" alt="Pulpit rock" width="24" height="24"/><a href="#"> Logs </a></li>
<li><img border="0" src="file:///C:/Users/Dev 2/Desktop/mpact-dojo-boilerplate/src/app/resources/img/silver-gray/faq.png" alt="Pulpit rock" width="24" height="24"/><a href="#"> Help </a></li>
</ul>
</div>
<div id="toolsMenu" class="toolsMenu">
<div class="toolsTitle"> Managing tools </div>
<ul>
<li><img border="0" src="file:///C:/Users/Dev 2/Desktop/mpact-dojo-boilerplate/src/app/resources/img/silver-gray/donwload.png" alt="Pulpit rock" width="24" height="24"/><a href="#"> Resources </a></li>
<li><img border="0" src="file:///C:/Users/Dev 2/Desktop/mpact-dojo-boilerplate/src/app/resources/img/silver-gray/play.png" alt="Pulpit rock" width="24" height="24"/><a href="#"> Playlists </a></li>
<li><img border="0" src="file:///C:/Users/Dev 2/Desktop/mpact-dojo-boilerplate/src/app/resources/img/silver-gray/clock.png" alt="Pulpit rock" width="24" height="24"/><a href="#"> Agenda </a></li>
<li><img border="0" src="file:///C:/Users/Dev 2/Desktop/mpact-dojo-boilerplate/src/app/resources/img/silver-gray/monitor.png" alt="Pulpit rock" width="24" height="24"/><a href="#"> Stations </a></li>
</ul>
</div>
</div>
</div>
</div>
*もちろん、自分のイメージが css に含まれている必要があることはわかっていますが、私は実際にはデザイナーではなく、インターフェイスの作成/微調整があまり好きではありません。
私の EntryPoint.js:
define([
"dojo/_base/declare",
"dijit/_Widget",
"dijit/_TemplatedMixin",
"dijit/_WidgetsInTemplateMixin",
"./ui/layout/GridLayout",
"dojo/text!./ui/templates/EntryPoint.html",
"dijit/layout/BorderContainer",
"dijit/layout/TabContainer",
"dijit/layout/ContentPane"
], function(
declare,
_Widget,
_TemplatedMixin,
_WidgetsInTemplateMixin,
GridLayout,
template
){
return declare([_Widget, _TemplatedMixin, _WidgetsInTemplateMixin], {
templateString: template,
constructor: function() {
},
postCreate: function() {
//var gridLayout = new GridLayout({}, "placeholder");
//gridLayout.placeAt("placeholder");
}
});
});
さて、基本的には、さまざまなリスト ( administrationMenuとtoolsMenu )をクリックできるようにしたいと思います。したがって、コンテンツがcenterPanel内でロード/レンダリングされるようにします。さらに、クリック項目を URL に含めたいと考えています。
ユース ケース シナリオ: 初めてアプリケーションをロードすると、ホームページがロードされます。次に、メニュー項目 (設定など) をクリックすると、設定ページが読み込まれます。URL は www.myapp.com/settings のように変わります。
ありがとうございました。
考えられる解決策: メニューごとに、data-dojo-attach-point を使用して名前を指定します。それぞれに dojo.query("").connect を使用し、カスタム コード (例: new SettingsPage ) からインスタンスを作成し、centerPanel でレンダリングします...