在我的Aurelia webapp,我有一个页面的链接。这些被捕获到一个click.delegate=""
,它转到了代码隐藏方法。然后,视图代码将使用http-fetch来进行AJAX调用,然后通过更新绑定到HTML模板中某些元素的内部变量来刷新数据。完美工作,除了一件事 - 它没有反映在URL位置栏(在浏览器中 - 所以书签是不可能的)。设置URL而不刷新整个模板在Aurelia
一个解决方案是创建一个带参数的路由。这将调用activated()
方法w。参数。我观察到构造函数是而不是反复调用(当导航到相同的路线,但具有不同的参数)时,所以我猜想正在使用ViewModel的同一个实例。
{ route: 'cell-detail/:id', name: 'cell-detail', moduleId: 'cell-detail', title: 'cell-detail' },
不过,我想知道(和防止)被渲染的每一次,不只是改变绑定变量的部分全HTML模板。我已经在使用activationStrategy.invokeLifecycle
,所以也许它已经以这种方式工作了。我不知道如何找出答案。
这是否正确,如果有的话,有没有更新URL /位置栏的方法,而无需重新绘制整个HTML模板(设置一个新的位置以反映内部更改而不使用路由器)?
更新 观察在Chrome开发者工具的元素选项卡中的DOM的变化,好像奥里利亚只更新有什么变化 - 等反应的影子-DOM。如果使用activationStrategy.replace
,至少有一个很大的可见区别(HTML在开发控制台中亮起/闪烁)。
然而,使用路由器与仅更新内部绑定变量似乎有一点区别,所以如果有人确切知道发生了什么事情,那将是有启发性的。
有趣的,我会研究一下。谢谢。 – specimen
这似乎完美!我在文档中看到,路由器中也有一些内置的PushState支持。 – specimen