视图不';在Dojo.mobile中跳过ScrollableView时不隐藏

视图不';在Dojo.mobile中跳过ScrollableView时不隐藏,dojo,dojox.mobile,Dojo,Dojox.mobile,创建移动Dojo应用程序时遇到以下问题。我在这里和其他地方搜索过,没有看到其他人有这个问题。我是Dojo新手,所以可能只是我做错了什么 以下是编程行为:在第一个面板(div“one”)中,单击“+”按钮;跳过Div“two”,将Div“three”转换为视图;单击“取消”,再次跳过div“2”,div“1”转换回视图。这一切都是应该的 问题是:当div“one”转换回视图时,会出现一个浏览器滚动条,当您滚动到底部时,div“three”仍然可见。这种情况只发生一次。再次单击“+”,然后再次单击“

创建移动Dojo应用程序时遇到以下问题。我在这里和其他地方搜索过,没有看到其他人有这个问题。我是Dojo新手,所以可能只是我做错了什么

以下是编程行为:在第一个面板(div“one”)中,单击“+”按钮;跳过Div“two”,将Div“three”转换为视图;单击“取消”,再次跳过div“2”,div“1”转换回视图。这一切都是应该的

问题是:当div“one”转换回视图时,会出现一个浏览器滚动条,当您滚动到底部时,div“three”仍然可见。这种情况只发生一次。再次单击“+”,然后再次单击“取消”,div“three”将按原样隐藏,不会显示滚动条。在HTML中,如果切换divs“two”和“three”,则不会发生不正确的行为。不幸的是,这不是我的解决方案,因为应用程序将需要以任何给定的顺序进行转换

在Chrome的开发工具中,如果您观察HTML元素,您会注意到div“three”的“visibility”属性在第二次单击“Cancel”之前不会返回到“hidden”

我猜这与我以编程方式创建视图的方式有关。在此方面的任何帮助都将不胜感激

HTML(test.HTML)


这与视图的渲染方式有关。如果在第三个视图中添加额外的工具栏按钮后,在第二个视图中调用startup()

添加以下内容:

registry.byId('two').startup();
的末尾,单击\u activity\u edit()函数,它就会工作。看,我已经为你的代码创建了


我想解释为什么会这样,但我不是100%确定。一旦我有时间仔细考虑,我可能会添加一个解释;或者,如果有人对ScrollView的内部工作原理有更透彻的了解,他可能会给出详细的答案。

效果很好。斯蒂芬,谢谢你抽出时间来解决这个问题。我想得越多,就越有道理。Div“two”不是由框架呈现的,因此它不知道如何处理未呈现的元素。再次感谢。
require([
'dojo/ready',                       'dijit/registry',               'dojox/mobile/parser',
'dojox/mobile/deviceTheme',         'dojox/mobile/compat',          'dojox/mobile/Icon',
'dojox/mobile/ScrollableView',      'dojox/mobile/Heading',         'dojox/mobile/ListItem',
'dojox/mobile/EdgeToEdgeList',      'dojox/mobile/ToolBarButton',   'dojox/mobile'
],
function(ready, registry, parser, deviceTheme, compat, Icon, ScrollableView, Heading, ListItem, EdgeToEdgeList, ToolBarButton, mobile){
ready(function(){
    var view_activity_edit = new ScrollableView(null, 'three');
    var view_activity_view = new ScrollableView(null, 'two');

    var view_activities = new ScrollableView(null, 'one');
        view_activities.selected = true;

        var heading = new Heading({
            label: 'Activities'
        });
        view_activities.addChild(heading);

            var button = new ToolBarButton({
                icon: 'mblDomButtonWhitePlus',
                style: 'float:right;',
                moveTo: 'three',
                onClick: function(e){
                    click_activity_edit(e,0);
                }
            });
            heading.addChild(button);


        var list_activity = new EdgeToEdgeList({
            id: 'activity-list'
        });
        view_activities.addChild(list_activity);

        view_activities.startup();
});

this.click_activity_edit = function(e, activityid) {
    var view_activity_edit = registry.byId('three');
        view_activity_edit.destroyDescendants(false);

        var heading = new Heading({
            label: 'Activity'
        });
        view_activity_edit.addChild(heading);

            var button = new ToolBarButton({
                label: 'Cancel',
                moveTo: 'one',
                transitionDir: -1,
                arrow: 'left'
            });
            heading.addChild(button);

    view_activity_edit.startup();
};

parser.parse();
});
registry.byId('two').startup();