【问题标题】:sencha touch 2 history.back() does not work?sencha touch 2 history.back() 不起作用?
【发布时间】:2012-06-05 15:54:33
【问题描述】:

我正在使用 sencha touch 2 MVC 应用程序。在我的 app.js 文件中,我没有 launch() 方法和

controllers: ['HomeController'],

还有我的 HomeController 路由

       routes: {
        '': 'viewHomePage',                       //1st page
        'ap': 'viewContactPage',                  //2nd page
        'ap/:id': 'viewContactPageById'           //3rd page
       //others
    }

在第二页和第三页我有一个按钮

xtype:'button',
listeners: {
                    tap: function () {
                        history.back();
                    }
                }

现在的问题是 history.back() 在 page2 的情况下不起作用。但它在 page3 的情况下效果很好。

如果这是特殊情况,那么如何重新启动我的应用程序。

如果它在 MVC 的情况下不起作用,那么解决方案是什么? 还是有其他方法可以做到这一点?

【问题讨论】:

    标签: touch extjs sencha-touch-2


    【解决方案1】:

    抱歉,克里斯,但是可以使 history.back() 与 Sencha Touch 2 应用程序一起使用。只要您的控制器使用redirectTo(url),标准的history.back() 就会按预期运行。

    因此,如果在控制器中您从当前 url 重定向到另一个,在重定向后使用 history.back() 将返回到原始 url。

    【讨论】:

      【解决方案2】:

      如果您复制了旧按钮及其点击事件,则会出现命名冲突,从而导致此问题。

      将所有新按钮重命名为唯一名称,然后删除并再次创建点击事件

      【讨论】:

        【解决方案3】:

        history.back() 重定向到上一个 URL。 sencha touch 应用程序包含在单个 URL 中,没有任何重定向。它的工作原理是将一堆容器放在一起。但是,它们都包含在同一页面中,因此 history.back() 将不起作用。

        您需要改变对 sencha touch 应用程序中重定向的看法。基本上,为了“返回”,您需要切换视图。您可以使用以下代码来做到这一点:

         Ext.Viewport.setActiveItem({
              xtype: 'yourxtype'
         });
        

        此代码将视图从当前视图切换到您选择的 xtype。

        【讨论】:

        • 这并不完全准确。您可以将 redirectTo('url') 与路由一起使用,然后处理该路由的函数应该是执行“setActiveItem”调用的函数。
        猜你喜欢
        • 2012-09-19
        • 1970-01-01
        • 1970-01-01
        • 2012-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多