在Aurelia中使用路由器时如何设置/读取查询字符串
How do I set/read a query string when using the router in aurelia?
使用 aurelia.io 框架路由器时,读取和设置查询字符串的首选方法是什么?
例如,在网址中:http://www.myapp.com/#/myroute1/?s=mystate
如何读取和设置 url 的?s=mystate
部分,并让 aurelia 路由器正确导航并记住该状态,以便每当我到达route1
视图模型时,我都可以读取该状态变量并对其进行处理?
在视图模型上,您可以实现方法激活(params,routeConfig),对象参数应包含查询变量
activate(params, routeConfig){
console.log(params.s); //should print mystate
}
要导航到某个路由,您必须在应用程序中指定此路由的名称.js(名称:"重定向")
config.map([
{ route: ['','welcome'], moduleId: './welcome', nav: true, title:'Welcome' },
{ route: 'flickr', moduleId: './flickr', nav: true, title:'Flickr' },
{ route: 'redirect', moduleId: './redirect', name: 'redirect'},
{ route: 'child-router', moduleId: './child-router', nav: true, title:'Child Router' }
]);
然后使用带有参数的方法导航到路由。
router.navigateToRoute('redirect', { s:'mystate'}, {replace: true});
如果要更改queryParams
并使用它重新加载页面(例如,在分页链接单击时更改页码) - 您必须将determineActivationStrategy
与replace
一起使用。
创建视图模型并添加determineActivationStrategy
函数:
import {activationStrategy} from 'aurelia-router';
export class ModelView{
determineActivationStrategy() {
return activationStrategy.replace;
}
}
将激活事件添加到模型中以保存参数:
activate(params, routeConfig, navigationInstruction){
this.queryParams = params ? params : {};
}
添加代码以使用相同的或新参数重新加载或导航:
moveToNewPage(newPageNumber){
this.queryParams.page = newPageNumber; // change page param to new value
this.router.navigateToRoute(this.router.currentInstruction.config.name, this.queryParams);
}
附言this.router
访问使用注入,不要忘记在应用程序配置中设置路由器name
:
import {Router} from 'aurelia-router';
export class ModelView{
static inject() { return [Router] };
constructor(router){
this.router = router;
}
}
根据最新配置,如果未设置推送状态,则不会检索查询字符串。
将推送状态设置为 true。 并在索引中添加基本标记.html。
<base href="http://localhost:9000/">
- 索引.html
config.options.pushState = true;
- app.js -> 配置路由器方法。
相关文章:
- 无法读取 php 中 JavaScript 设置的 cookie
- 使用 JavaScript 设置、读取和写入 Cookie
- j查询在设置属性后在后续单击时不读取数据属性
- 如何获得设置超时以从输入中读取值
- 无法设置/读取未定义的属性
- 无法读取属性'区域设置'的未定义
- 如何读取存储在图像的数据src中的URL,并在另一个img控制器的src中设置该URL onclick
- 如何修复未捕获的类型错误:无法读取属性'设置'的未定义
- 在读取之前设置未定义的 javascript 属性
- 使用javascript使用两个不同的域设置和读取cookie
- 如何读取最终用户客户端的控制面板设置
- 将节点.js对象设置为从文件读取的数据
- 无法使用 extjs4 读取和设置 Json 数据
- 是否可以在页面中设置本地存储或会话变量 asp.net 并在另一页面上的javascript中读取它
- 读取<br>来自HTML,并在javascript中设置为
- 读取 HTML 并将文本设置为变量
- 浏览器如何读取JavaScripts,它应该排在第一位(设置在顶部):事件?功能?或子函数
- 无法设置/读取未定义的属性
- 在Aurelia中使用路由器时如何设置/读取查询字符串
- 在HTML表单字段中设置/读取禁用属性的成本有多高?