2012-06-05 72 views
0

我正在使用sencha touch 2 MVC应用程序。在我的app.js文件我没有推出()方法和sencha touch 2 history.back()不起作用?

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的情况下不起作用。但它对第3页非常有用。

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

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

回答

-1

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

你需要改变你对sencha touch应用程序中重定向的看法。基本上,为了返回,你需要切换视图。您可以使用以下代码执行此操作:

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

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

+3

这并不完全准确。你可以对路由使用redirectTo('url'),然后处理该路由的函数应该是执行'setActiveItem'调用的函数。 – Subimage

2

对不起,Chris,但是history.back()可以与Sencha Touch 2应用程序一起使用。只要你的控制器使用redirectTo(url),标准的history.back()将按预期运行。

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

0

如果您复制了旧按钮及其轻击事件,而不是导致此问题的命名冲突。

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