这是我的孩子路由器和查看代码:
router.createChildRouter().makeRelative({
moduleId: 'products',
fromParent: true,
dynamicHash: ':id'
}).map([
{ route: 'specs', title: 'Specs', moduleId: 'specs', nav: true },
{ route: 'reviews', title: 'Reviews', moduleId: 'reviews', nav: true }
]).buildNavigationModel();
<ul class="tabs" data-bind="foreach: router.navigationModel()">
<li data-bind="css: { selected: isActive }"><a href="{{dynamicHash}}">{{title}}</a></li>
</ul>
将生成两个包含以下网址的标签:
example.com/#products/200/specs
example.com/#products/200/reviews
我的评论页面上有一个工具栏,按日期或评级对内容进行排序,因此网址变为:
example.com/#products/200/reviews?date=asc&rating=desc
但是当我切换标签并返回时,我丢失了查询字符串。有没有办法将它们保留在URL中,直到我清除过滤器?
答案 0 :(得分:0)
如果不知道您的确切实现,是否有任何理由不将其设置在负责管理状态的模块中?
products /(id)/ specs view model / w / e -
define (['config.queryparams'], function (queryParams) {
var ctor = function () {
var self = this;
// Assume the queryParms module has an observable called parameters
self.queryparameters = queryParams.parameters;
}
ctor.prototype.active(id, querystring) {
var self = this;
// Set the queryParams.parameters observable to the query string
self.queryparameters(querystring);
}
return ctor;
});
然后在你的config.queryparams模块中 -
define([], function () {
var parameters = ko.observable();
var module = {
parameters: parameters
}
});
现在只需从您的其他模块引用config.queryparams并将其共享。有意义吗?