Sencha使用参数调用路由

时间:2016-11-06 12:09:12

标签: extjs routes sencha-touch parameter-passing

我正在开发一个带有sencha extjs的移动应用程序。我希望我的应用程序支持Android手机上的后退按钮,然后我想出使用sencha路由可以解决这个问题。我有很多使用路线的观点,有些观点是相互关联的。因此,一些视图控制器需要参数。例如,要查看视图,在视图中我有视图操作的视图侦听器。

viewA : function(obj1, obj2){
     //obj1, obj2 are required to open that view
     this.redirectTo('myViewA', ture);
}

在路线控制器中

routes: {
    'myViewA' : {
        action: 'onMyViewA'    //method onMyViewA to view viewA 
     }
},
{
    onMyViewA : function(){
       //view viewA need parameter obj1, obj2
    }
}

我的问题是,如何将参数obj1,obj2传递给路由控制器?或任何其他解决方案。感谢。

2 个答案:

答案 0 :(得分:0)

当您注册路线时,您可以添加如下参数:

routes: {
    'myViewA/:id1/:id2' : {
        action: 'onMyViewA'    //method onMyViewA to view viewA 
     }
},
{
    onMyViewA : function(id1, id2){
    }
}

在您的视图中,将参数添加到路径中,如下所示:

viewA : function(id1, id2){
     if (id1 && id2)
        this.redirectTo('myViewA/' + id1 + '/' + id2, true);
}

查看this linkroutes的文档以获取更多信息。您还可以验证参数。

如果你的obj1obj2是复杂的对象,你需要编写一些自定义逻辑,将这些对象存储在某处,并且只对路径的url添加id或某种引用。

答案 1 :(得分:0)

您可以在&的帮助下传递参数符号。例如。你可以传递如下数据 www.any.com/any/#param1&value1&param2&value2 。 然后,您可以使用相应的键值对分离这些令牌。 但你不能通过网址传递对象