dojox/app を使用して Web アプリケーションを構築しています。config.json ファイルは次のようになります。
{
"id": "app",
"name": "app",
"description": "Example dojox/app based Worklight app",
"dependencies": [
"commonapp/app",
"commonapp/BaseViewController",
"dojo/store/Memory",
"dojox/app/utils/mvcModel",
"dojox/mvc/EditStoreRefListController",
"dojo/store/Observable",
"dojox/mobile/Button"
],
"controllers": [
"dojox/app/controllers/Load",
"dojox/app/controllers/Transition",
"dojox/app/controllers/Layout",
"dojox/app/controllers/HistoryHash"],
"stores": {
},
"models": {
},
"defaultView": "MainTemplate",
"defaultTransition": "slide",
"views": {
"MainTemplate": {
"template": "commonapp/templates/MainTemplate.html",
"controller": "commonapp/templates/MainTemplate.js",
"nls": "commonapp/templates/nls/MainTemplate",
"defaultView": "SampleView+HiddenMenu",
"views": {
"SampleView": {
"template": "commonapp/sample/SampleView.html",
"controller": "commonapp/sample/SampleView.js",
"nls": "commonapp/sample/nls/SampleView",
"constraint" : "center",
},
"HiddenMenu": {
"template": "commonapp/MenuItems/HiddenMenu.html",
"controller": "commonapp/MenuItems/HiddenMenu.js",
"nls": "commonapp/MenuItems/nls/HiddenMenu",
"constraint" : "bottom"
},
"ExpandedMenu": {
"template": "commonapp/MenuItems/ExpandedMenu.html",
"controller": "commonapp/MenuItems/ExpandedMenu.js",
"nls": "commonapp/MenuItems/nls/ExpandedMenu",
"constraint": "bottom"
}
}
}
}
}
HiddenMenu および ExtendedMenu ビューには、これらの各ビューを切り替えるために使用されるボタンのみが含まれています。たとえば、HiddenMenu.html は次のようになります。
<div class="mblView">
<script type="dojo/require">at: "dojox/mvc/at"</script>
<div style="text-align: right">
<button data-dojo-type="dojox.mobile.Button" data-dojo-attach-point="dapMenuButton">Label</button>
</div>
</div>
HiddenMenu.js コントローラーには、init メソッドに次のコードがあります。
on(this.view.dapMenuButton, "click", lang.hitch(this, function(e) {
var transOpts = {
target : "MainTemplate,ExpandedMenu",
url : "#MainTemplate,ExpandedMenu" // this is optional if not set it will be created from target
};
this.view.app.transitionToView(e.target,transOpts,e);
}));
もう1つは同様のコードです。アプリは正しく読み込まれますが、これら 2 つのビューを切り替えると奇妙な動作が発生します。切り替えは正しく行われていますが、2 つのビューが期待どおりに同じスペース (ページの下部) に表示されていません。それらの 1 つが他の上に表示されます。ここでの目的は、2 番目のボタン (「ラベルを非表示」) が最初のボタン (「ラベル」) によって残されたスペースを占有することです。これを達成する方法を知っている人はいますか?
ありがとうございました