如何将变量传递到shell或根视图模型

时间:2015-10-27 18:53:23

标签: durandal durandal-navigation

我是durandal的新手。我只是想知道是否有办法通过查询字符串或任何其他方式将变量传递给根视图模型(即shell)?

所以main.js看起来像下面的

define(['durandal/app'],  function (app) {
  app.configurePlugins({
    router: true
  });

  app.start().then(function () {
    app.setRoot('shell');
  });
});

你可以做一些类似于下面shell.js文件中写的内容。 我尝试了但它不起作用

function activate(variableIwantToPass) {
  doSomething(variableIwantToPass);
  configureRoutes(variableIwantToPass);
  return router.activate();
}

function configureRoutes(variableIwantToPass) {
  var specialRoute = 'bar';
  if(variableIwantToPass == 'foo') {
    specialRoute = foo;
  }
  var routes = [
    {
      route: '',
      moduleId: 'home'
    },
    {
      route: 'doThings/:specialRoute/',
      moduleId: 'orchestrator'
    }
  ];

  router.makeRelative({ moduleId: 'viewModels'}).map(routes); 
}

我无法调用服务来获取shell中的数据,因为我想要的信息/变量被传递到导致spa作为查询字符串参数的页面。

那么,是否可以将一些东西传递给shell,或者是否有其他替代方法可以实现我想要的东西。就像创建一个cookie来存储这个变量并通过shell.js中的javascript读取它一样?

1 个答案:

答案 0 :(得分:0)

在生产环境中,在shell之前进行某些计算几乎是必须的。例如,看看github上的Durandal.Auth以及如何处理身份验证以及将令牌信息存储在会话存储中并在shell中访问。