0

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 番目のボタン (「ラベルを非表示」) が最初のボタン (「ラベル」) によって残されたスペースを占有することです。これを達成する方法を知っている人はいますか?

ありがとうございました

4

1 に答える 1

0

このようにアプリを正確にセットアップしていないため、わかりませんが、問題は、ネストされたビューと複数のデフォルトの子を使用していることだと思います。

MainTemplate、SampleView は移行後も表示されますか? 次の方法で移行を試すことができます。

target : "MainTemplate,SampleView+MainTemplate,ExpandedMenu",

同じ親ビューの下に SampleView を持たずに、"constraint": "bottom" を持つ単一の親の下に HiddenMenu と ExpandedMenu を持つことは理にかなっていますか? それも役立つかもしれません。

引き続き問題が発生する場合はお知らせください。問題をデバッグする方法を見つけることができます。

よろしく、エド

于 2014-07-23T18:02:37.180 に答える