我正在开发一个带有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传递给路由控制器?或任何其他解决方案。感谢。
答案 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 link上routes
的文档以获取更多信息。您还可以验证参数。
如果你的obj1
和obj2
是复杂的对象,你需要编写一些自定义逻辑,将这些对象存储在某处,并且只对路径的url添加id或某种引用。
答案 1 :(得分:0)
您可以在&的帮助下传递参数符号。例如。你可以传递如下数据 www.any.com/any/#param1&value1¶m2&value2 。 然后,您可以使用相应的键值对分离这些令牌。 但你不能通过网址传递对象。