导航视图 Sencha Touch 2

Posted

技术标签:

【中文标题】导航视图 Sencha Touch 2【英文标题】:Navigation View Sencha Touch 2 【发布时间】:2013-01-14 12:54:44 【问题描述】:

我在 Sencha Touch 2 中的 NavigationView 有问题。 当我按下“返回”按钮时,我无法浏览多个窗口。

我使用 view.push() 和 view.pop() 导航。

view.js:

Ext.define('MyApp.view.view', 
extend: 'Ext.navigation.View',
alias: 'widget.View',

config: 
    id: 'nvView',
    items: [
        
            xtype: 'toolbar',
            docked: 'bottom',
            layout: 
                align: 'center',
                pack: 'center',
                type: 'hbox'
            ,
            items: [
                
                    xtype: 'button',
                    iconAlign: 'center',
                    iconCls: 'info',
                    iconMask: true,
                    text: 'Ayuda'
                ,
                
                    xtype: 'button',
                    iconAlign: 'center',
                    iconCls: 'compose',
                    iconMask: true,
                    text: 'Guardar'
                ,
                
                    xtype: 'button',
                    id: 'volver',
                    iconAlign: 'center',
                    iconCls: 'reply',
                    iconMask: true,
                    text: 'Volver'
                
            ]
        ,
        
            xtype: 'formpanel',
            title: 'View',
            html: 'View1',
            id: 'View1',
            styleHtmlContent: true,
            items: [
                
                    xtype: 'button',
                    docked: 'bottom',
                    id: 'bView1',
                    margin: 10,
                    ui: 'forward',
                    text: 'siguiente'
                
            ]
        
    ]

);

view2.js:

Ext.define('MyApp.view.View2', 
extend: 'Ext.form.Panel',
alias: 'widget.View2',

config: 
    fullscreen: true,
    html: 'View2',
    id: 'View2',
    styleHtmlContent: true,
    items: [
        
            xtype: 'button',
            docked: 'bottom',
            id: 'bView2',
            margin: 10,
            ui: 'forward',
            text: 'siguiente'
        
    ]

);

view3.js:

Ext.define('MyApp.view.View3', 
extend: 'Ext.form.Panel',
alias: 'widget.View3',

config: 
    fullscreen: true,
    html: 'View3',
    id: 'View3',
    styleHtmlContent: true,
    items: [
        
            xtype: 'button',
            docked: 'bottom',
            id: 'bView3',
            margin: 10,
            ui: 'forward',
            text: 'siguiente'
        
    ]

);

ViewController.js:

Ext.define('MyApp.controller.ViewController', 
extend: 'Ext.app.Controller',

config: 
    views: [
        'View'
    ],

    refs: 
        bView1: 'bView1',
        bView2: 'bView2'
    ,

    control: 
        "#bView1": 
            tap: 'onView1'
        ,
        "#bView2": 
            tap: 'onView2'
        
    
,

onView1: function(button, e, options) 
    button.up('navigationview').push(
        xtype: 'View2',
        title: 'View2'
    );
,

onView2: function(button, e, options) 
    button.up('navigationview').push(
        xtype: 'View3',
        title: 'View3'
    );

);

我的问题的一个例子是: 我从 view1 开始,然后按下“siguiente”按钮,然后转到 view2。如果我按下按钮“返回”(在导航视图中),我会进入 view1,然后按下按钮“siguiente”并进入 view2,但在 view2 中,我按下按钮“siguiente”我无法进入 view3。

非常感谢您!

【问题讨论】:

必须给出一些代码,否则我认为没有人会尝试提供帮助。 【参考方案1】:

因为你使用id,所以当你第二次启动它时,它会发生冲突,显示警告和功能无法正常工作。如果您使用itemId,您将是安全的。

itemId: 'bView1' //same for other view bView2, bView3

要在控制器中引用您的itemId,只需这样做:

refs: 
    bView1: '[itemId=bView1]',
    bhView2: '[itemId=bView2]',
    bhView3: '[itemId=bView3]'
,

control: 
     bView1: 
         tap: 'onView1'
     ,
     bhView2: 
         tap: 'onView2'
     ,
,

onView1: function(button, e, options) 
    button.up('navigationview').push(
        xtype: 'View2',
        title: 'View2'
    );
,

onView2: function(button, e, options) 
    button.up('navigationview').push(
        xtype: 'View3',
        title: 'View3'
    );

希望对你有帮助:)

【讨论】:

非常感谢,您说的完全正确。我按照你的指示解决了我的问题。 :) 最后一个问题:为什么你将名称更改为通过 bhView2 和 bhView3 引用 bView2 和 bView3? 哈哈!这只是一个错字,因为我玩dota太多了:))但很高兴它有帮助:)

以上是关于导航视图 Sencha Touch 2的主要内容,如果未能解决你的问题,请参考以下文章

导航视图上的 Sencha Touch 2 动态按钮

Sencha Touch 2:如何覆盖导航视图上的后退按钮

推送视图导航 Sencha Touch

Sencha Touch 2 厨房水槽像导航

Sencha Touch 2 在轮播下方添加导航栏

使用 store sencha touch 2 将数据加载到 List