我正在使用路由構建一個sencha touch 2應用程序。如果我直接理解,這需要在控制器中指定路由,並將app.launch函數留空(或至少不加載視圖/在那裏調用控制器)。Sencha Touch 2默認路由
我的一個控制器的指定「」的路線,這被加載時,網址的哈希部分是空的(http://localhost/
):
Ext.define('SOP.controller.PartyController', {
extend: 'Ext.app.Controller',
config: {
routes: {
"": "showChooseParty"
到目前爲止好....
然而,在在這種情況下,如果散列部分包含一些垃圾(例如http://localhost/#tralala
,當任何控制器中沒有指定tralala路由時),則應用只會掛載在加載屏幕上:不會調用任何操作,並且啓動功能爲空。我想要的是當散列部分與任何已知路由匹配時加載的路由(散列部分垃圾可能是應用以前版本中的路由,或者Facebook試圖讓我高興地在散列中提供accesstoken在重定向)。
我有一個解決辦法工作,在發射功能:
launch: function() {
if (!this.getRouter().recognize(window.location.hash.substr(1))) {
window.location.hash = "";
}
},
,但是我不喜歡直接指向哈希代碼,它的工作是依賴於推出()被調用之前的路線第一次匹配,並且this.getRouter()對象是"private" and not supposed to be used。
所以我的問題,什麼是「正確」的方式來提供默認路由?還是我完全錯過了使用路線的要點?
這個工作完美,但在sencha 2.3.1 Ext.app.Action被標記爲私人。 (http://docs.sencha.com/touch/2.3.1/#!/api/Ext.app。行動) 那麼在應用程序歷史記錄中設置項目的正確方法是什麼? – smarques