您的权利。我继续前进,测试了你的说法,看起来所有查询字符串参数都被写入上下文参数。
,所以如果你有这样的路线:您激活方法内部
http://www.somesite.com/#/services/?routeInfo=value1&router=value2¶m1=value3
:
define(function() {
return {
activate: function(context) {
console.log(context);
}
};
});
然后context
将是一个JSON对象:
{
routeInfo: {...}, // info object of moduleId and such
router: {...}, // reference to the router.js pluggin
param1: 'value3',
splat: ['?routeInfo=value1&router=value2¶m1=value3']
}
所以,查询字符串参数正在写入t他context
对象,但如果您的查询字符串参数为routeInfo
,router
或splat
那么会发生不好的事情。特别是如果它的splat
!
所以,我想只是不使用这些参数..
此外,你可以看到你的查询字符串参数传递给图示对象。你可以通过这样做来轻松解析查询字符串:
function parsePlease(queryString) {
var obj = {};
var splitV = queryString.split('&');
for (var i = 0, max = splitV.length; i< max; i++) {
obj[splitV[i].split('=')[0]] = splitV[i].split('=')[1];
}
return obj;
}
类似的东西。你可能想要改善这一点..我只是鞭打它。
另外,您还可以从window.location对象中获取查询字符串参数。从window.location.search
对象它将包含?
删除器后的所有内容。
这是否回答您的问题?
除非我做了其他的错误,看来我只有在我使用mapAuto的时候才会得到splat属性。我想我可以使用它,但不知道还有什么会做我的路由。无论如何,从我玩得更远,对我来说最好的办法是简单地使用window.location.search。我真的希望有一种方法可以做到这一点,而不必自己解析字符串。 – 2013-03-26 20:33:42
durandal处于早期阶段,路由器模块是插件。给它一些时间..我敢打赌,未来几个月会好得多。图书馆仍在积极努力。现在使用它很好,因为随着它的增长,你会变得更加知识渊博。 – 2013-03-26 23:06:18