javascript - 使用路由器进行导航并将对象作为查询字符串传递

标签 javascript router durandal durandal-navigation

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

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

或者我是否必须手动将对象参数化为 url 字符串并将其传递给 router.navigate 就像

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

最佳答案

另一个解决方案是:

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
      ......
}

关于javascript - 使用路由器进行导航并将对象作为查询字符串传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19179490/

相关文章:

javascript - React-Apollo,不要在组件加载时运行查询

javascript - 端口转发路由器监听家用电脑上的 node.js 服务器

java - ServerSocket 在这些场景中究竟表现如何?

angular - 向 Angular router.navigate 添加参数

javascript - Durandal 函数未定义

javascript - AngularJS Ngdraggable 问题

javascript - 使用 Backbone 和 Backbone.Marionette 进行复杂路由

javascript - 在 durandal 中使用具有相同模块 ID 的路由时如何强制激活?

knockout.js - 如何停止 durandal/jquery 从 View 中剥离脚本标签?

javascript - 如何从外部网站提取特定的div内容?