1

我有两个模块,我想通过从一个模块导航到另一个模块来连接它们。由于要传递几个参数,我想使用查询字符串。有没有办法使用内置路由器导航到一个模块并让我的对象参数像

var params = {
  param1: "parameter",
  param2: "anotherparameter"
}
router.navigate("theothermodule", params);

还是我必须手动将对象参数化为 url 字符串并将其传递给 router.navigate 之类的

router.navigate("theothermodule?" + $.param(params));
4

2 回答 2

1

另一种解决方案是:

var params = {
  param1: "parameter",
  param2: "anotherparameter"
}
//notes : this object can contain arrays like knockout observable()
//or observableArray();

1.- 在 shell.js 中创建对象(参数)并将其映射到您的路由定义,如下所示:

 { route: 'routestr/:id', moduleId: 'viewmodels/adir/mymodul', title: 'je suis', 
hash: '#routestr', nav:3, routobj: params }

2.-您可以在调用此路由之前从任何地方更新,甚至添加新成员到您的对象,方法是从路由中破解对象。

var myrouteconfig = router.activeInstruction().config;
myrouteconfig.param2 = newvalue;
myrouteconfig.newdlyParam = value;
router.navigate("#routestr/" + id);

3.- 然后,在收据模块中:

var activate = function (id) {
      //var myid = parseInt(id); //noelem rubriq                    
      var myrouteconfig = router.activeInstruction().config;
      var mycallobject = myrouteconfig.params; //your object params
      var valparam2 = mycallobject.param2; // your param2 last value
      ......
}
于 2013-10-08T12:50:04.850 回答
-1

您必须手动将对象参数化为 url 字符串并映射到 router.activate ( http://durandaljs.com/documentation/Using-The-Router/ )。

但是,您可以与事件(http://durandaljs.com/documentation/Leveraging-Publish-Subscribe/ )或组合绑定( http://durandaljs.com/documentation/Using-Composition/ )中的激活数据属性共享数据。

于 2013-10-04T12:20:23.567 回答