2016-11-06 64 views
0

我正在开发一个带有sencha extjs的移动应用程序。我想让我的应用程序支持android手机上的后退按钮,然后我想出使用sencha路线可以解决这个问题。我有很多意见使用路线和一些意见相互关联。因此,一些视图控制器需要参数。例如,要查看视图,请在视图中查看视图操作的侦听器。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路由控制器?或任何解决方案来解决这个问题。谢谢。

回答

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); 
} 

检查文档routesthis link获取更多信息。您也可以验证参数。

如果您的obj1obj2是复杂的对象,则需要编写一些自定义逻辑,将这些对象存储在某处并仅放入id或对路由的url的某种引用。

0

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