2012-08-14 77 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(); 

參考觸摸歷史的指南: