2012-08-14 75 views
0
导航

我'将内容添加到我的应用程序视这样的:后退按钮 - 通过视口

Ext.Viewport.animateActiveItem(item, {transition}) 

我'寻找一种方式来获得“回”到最后一个视图。这是可能的,还是视口摧毁最后一个视图?

+0

您应该使用[NavigationView(http://docs.sencha.com/touch/2-0/#!/api/ Ext.navigation.View) – 2012-08-14 12:27:49

+0

不是一个好主意,因为这个控件非常不灵活(它总是创建一个标题栏?)。我们基于xml定义非常动态地创建了sencha-apps/guis,因此如果视图需要标题栏或者没有标题栏,它就不是“可预测”的。 – Marc 2012-08-14 12:41:12

回答

1

为什么不在第一个面板上使用Ext.Viewport.animateActiveItem()呢?

我没有在这里:http://www.senchafiddle.com/#xTZZg

希望这有助于

+0

是的,当然这很容易,这是我的第一个想法。问题在于保留最后一个视图的引用,因为我们正在用非常动态的方法构建应用程序,并且无法预测下一个视图的内容或最后一个视图的内容。我的希望是有一个简单的方法可以切换回最后一个视图。如果我用animateActiveItem()添加新内容会发生什么?它是否会破坏旧内容? – Marc 2012-08-14 19:05:00

+2

然后,不要直接将它们添加到视口,只需使用卡片布局创建一个容器并将视图添加到此容器。然后,通过获取卡容器中的项目数(activeItem = container.getItems().length)获取活动索引,并通过调用container.setActiveItem(activeItem-1)激活最后一个视图,可以轻松切换到最后一个视图。 。或者您也可以使用旋转木马让您​​轻松转到下一个或上一个视图,或使用导航视图并隐藏标题栏(使用CSS) – 2012-08-14 19:49:04

+0

我可以混合Tabpanel和旋转木马吗? – Marc 2012-08-15 10:27:57

2

为什么不直接使用内置的历史支持?您可以添加一个条目到历史记录对象,如下所示:

this.getApplication().getHistory().add(Ext.create('Ext.app.Action', { 
    url: 'dashboard' 
})); 

一旦您调用该函数,它将更改应用程序的URL哈希。你可以在你的控制器使用的路线抢事件......它添加到配置,像这样:

config: { 
    routes: { 
     'dashboard': 'showDashboard' 
    }, 
    control: { 
     //controls... 
    } 
}, 

煎茶触摸将识别URL变化,并期待你的路由调用一个函数像这样:

showDashboard: function() { 
    Ext.Viewport.animateActiveItem(item, {transition}); 
}, 

使用这种方法,本机背按键将带你回到以前的观点,你也可以调用的查看您想要去等...查看历史记录对象这里的文档:http://docs.sencha.com/touch/2-0/#!/api/Ext.app.History

+0

嗯,这将需要在我们的XML一些额外的信息,因为我需要在某处定义路线。谢谢你的提示,我会考虑一下。 – Marc 2012-08-16 07:11:34

0

Ext.app.Action是一个私人Sencha因此不能保证在将来的版本中存在。更好的方式是更换...

this.getApplication().getHistory().add(Ext.create('Ext.app.Action', { 
    url: 'dashboard' 
})); 

这... ...

this.getApplication().redirectTo('dashboard'); 

您还可以通过Model对象只要它实现的toURL()方法...

this.getApplication().redirectTo(myModelObj); 

如果需要,您现在可以使用以下返回:

history.back(); 

参考触摸历史的指南: