2014-07-23 36 views
0

我使用DojoX中/应用程序建立一个Web应用程序,和我的config.json文件看起来像这样:Dojox/app:如何正确切换视图?

{ 
    "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); 
})); 

另一种具有类似的代码。该应用可以正确加载,但在切换这两个视图时,我遇到了一个奇怪的行为。即使切换正确发生,这两个视图也不会显示在预期的相同空间中,这将位于页面的底部。其中一个正在上方显示。我的目的是第二个按钮(“隐藏标签”)占据第一个按钮(“标签”)留下的空间。有没有人知道如何实现这一目标?

谢谢

回答

0

我不知道,因为我还没有建立一个应用程序完全一样,但认为这个问题是您正在使用嵌套的视图和多个默认的孩子。

是MainTemplate,SampleView在转换后仍然可见?你可能想尝试与过渡:

目标:“MainTemplate,SampleView + MainTemplate,ExpandedMenu”,

会是有意义的有有HiddenMenu和ExpandedMenu与“约束”一个单亲下: “底部”,没有同一父视图下的SampleView? 这可能也有帮助。

让我知道如果你仍然有问题,我们可以尝试找出一种方法来帮助我调试它。

Regards, Ed