避免重定向后重新加载页面
Avoiding page reload after redirect
Using Polymer 0.4.2 & app-router.
这是我的路由表
<app-router>
<app-route path="/" import="landing/landing-page.html"></app-route>
<app-route path="/balance" import="balance/balance-view.html"></app-route>
<app-route path="/balance/:year/:month" import="balance/balance-view.html"></app-route>
<app-route path="/balance/:year/:month/:day" import="balance/day-view/day-view.html"></app-route>
<app-route path="*" import="landing/landing-page.html"></app-route>
</app-router>
调用/balance
时,我需要确定当前的年份和月份,并重定向到/balance/year/month
。我已经尝试了router.go()
和window.location
来执行此重定向。
如果我这样做,balance-view
组件将在第一个实例下方第二次包含在内,从而导致布局中断。我目前看到解决这个问题的唯一方法是window.location.reload()
.但是,这会导致应用程序流中出现令人讨厌的延迟。
问题出在哪里以及如何解决?
经过一番挣扎,我让它工作了:
相同的app-router
会议:
<app-router>
<app-route path="/" import="landing/landing-page.html"></app-route>
<app-route path="/balance" import="balance/balance-view.html"></app-route>
<app-route path="/balance/:year/:month" import="balance/balance-view.html"></app-route>
<app-route path="/balance/:year/:month/:day" import="balance/day-view/day-view.html"></app-route>
<app-route path="*" import="landing/landing-page.html"></app-route>
</app-router>
然后,在balance/balance-view.html
:
<polymer-element name="balance-view" attributes="year month">
<template>
<h1>Balance view</h1>
<h2>Year: {{year}}</h2>
<h2>Month: {{month}}</h2>
</template>
<script>
Polymer("balance-view", {
domReady: function() {
console.log(this.pathArg1);
if (this.year === undefined) {
var d = new Date();
var month = new Array();
month[0] = "January"; month[1] = "February"; month[2] = "March"; month[3] = "April";
month[4] = "May"; month[5] = "June"; month[6] = "July"; month[7] = "August";
month[8] = "September"; month[9] = "October"; month[10] = "November"; month[11] = "December";
var currentYear = d.getFullYear();
var currentMonth = month[d.getMonth()];
document.querySelector('app-router').go('/balance/'+currentYear+'/'+currentMonth);
}
}
});
</script>
</polymer-element>
在domReady
功能中,如果我检测到没有通过year
,我会计算当前的年份和月份,我这样做:
document.querySelector('app-router').go('/balance/'+currentYear+'/'+currentMonth);
你可以看到它在这个 Plunker 中运行,代码在这里。
希望对您有所帮助!
相关文章:
- 在新的浏览器选项卡上加载新的aspx页面后调用JavaScript函数
- 更改css链接并等待加载新的css
- 如何在Ajax加载新内容时停止JavaScript执行
- 当在ng视图中加载新路由时,Tabbing(tabindex)针对错误的元素
- 如何使用输入数据加载新的extjs图表
- JQuery Masonry.Ajax图标和“;加载新项目”;绳子放错地方了
- 通过javascript在同一个打开的选项卡中重新加载新的网页内容
- 当用户到达页面右侧时加载新内容
- 数据表 AJAX 筛选器重新加载数据
- 超链接单击以加载新页面并执行JavaScript
- 单击时加载新的 SVG
- 在RadWindow中加载新页面,然后从加载的窗体中关闭窗口
- ajax在页面刷新之前不会加载新的sql结果
- 谷歌地图API-在从ajax页面加载新数据之前清除标记、多段线
- 使用Ajax加载页面,并在必要时加载新脚本
- 加载新页面时的过渡效果,AJAX
- Ajax没有正确加载新页面
- 正在加载新的Javascript,但正在调用旧的Javascript.MVC
- 咕噜咕噜的手表:实时加载重新加载落后 1 步....
- 我怎么能有一个花哨的盒子一样的弹出体加载,但与cookie不连续加载重新加载