在Aurelia中设置URL而不刷新整个模板
Set URL without refreshing whole template in Aurelia
在我的Aurelia网络应用程序中,我有一个带有链接的页面。这些被一个click.delegate=""
捕获,它转到代码隐藏中的方法。然后,视图代码将使用 http-fetch 进行 AJAX 调用,然后仅通过更新绑定到 HTML 模板中某些元素的内部变量来刷新数据。完美运行,除了一件事 - 它没有反映在 URL 位置栏中(在浏览器中 - 所以书签是不可能的)。
一种解决方案是创建带有参数的路由。这将调用activated()
方法,w. param。我观察到构造函数不是一遍又一遍地调用的(导航到相同的路由时,而是使用不同的参数),所以我想正在使用 ViewModel 的相同实例。
{ route: 'cell-detail/:id', name: 'cell-detail', moduleId: 'cell-detail', title: 'cell-detail' },
但是,我想知道(并防止)每次都呈现整个 HTML 模板,而不仅仅是更改的绑定变量的一部分。我已经在使用activationStrategy.invokeLifecycle
,所以也许它已经在以这种方式工作了。我不知道如何找出答案。
这是正确的吗,如果是这样,有没有办法更新 URL/位置栏,而无需重新绘制整个 HTML 模板(设置一个新位置以反映内部更改,而无需使用路由器)?
更新观察Chrome开发者工具中"元素"选项卡中的DOM更改,似乎Aurelia只更新更改的内容 - 就像React的shadow-dom一样。如果使用activationStrategy.replace
,至少有很大的可见差异(HTML 在开发控制台中亮起/闪烁)。
但是,使用路由器与仅更新内部绑定变量时似乎存在细微差异,因此,如果有人确定什么是快乐的,那将是启发性的。
为什么不直接使用 History的 API pushState 方法
history.pushState({someState : someStateValue}, "new title", newUrl);
当然,当用户深度链接到该 URL 时,您需要自己处理正确状态的恢复。您可以在基于params
对象的激活方法中执行此操作
activate(params){
// params.relevantStateValue1
// params.relevantStateValue2
// etc
}
- 强制模板刷新ember.js
- 如何通过ajax刷新JSF填充的javascript变量
- 如何解决Yii中的页面刷新问题
- Jquery提交表单而不刷新
- 刷新页面后会出现警报
- 刷新后保留对网页的更改
- 如何在不刷新页面的情况下更新显示框
- 重定向时角度刷新浏览器
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- Javascript,输出结果后页面不断刷新
- $(document).height()在刷新时随机化值(Safari 5.1.10)
- 刷新父窗口后无法关闭窗口
- 刷新页面时hasClass不起作用
- X秒后刷新select元素
- 如何在Javascript/ES6中的Aurelia浏览器应用程序中使用AWS S3
- chart.series[id].remove()无法刷新高位图表/高位股票中其他系列的图例属性
- 触发媒体查询断点时刷新页面
- 如何刷新列表框内容onclick或blur事件
- 在Aurelia中设置URL而不刷新整个模板
- 刷新Aurelia中的i18n转换字符串插值