Aurelia:单例视图中的静态自定义元素

Car*_*lis 9 javascript typescript aurelia aurelia-router

我有一个带有单例视图模型的Aurelia应用程序.该视图类似于文件浏览器,左侧是树视图(自定义元素),右侧是列表视图.视图模型activationStrategyinvokeLifecycle,并且列表视图基于路径参数填充.展开节点时,将使用AJAX调用填充树视图.树节点也是自定义元素.树视图是完全自定义的,不使用任何第三方插件.

当用户导航到另一条路线,然后再次返回到同一路线时,视图模型将保留,因为它是一个单例.但是,树视图不是因为不支持自定义元素作为单例.

我理解不支持单例自定义元素的原因.然而,我想知道在导航回同一路线时以某种方式创建"静态"树视图的最佳方法.到目前为止,我唯一想到的是在注入的共享状态下保持完整(扩展)树结构.然而,这似乎对我来说效率低下,因为树视图必须无缘无故地再次渲染,并且它使用添加的类和逻辑来创建树结构而不必要地使我的代码复杂化,而树结构已经隐含在自定义元素中.

任何输入都表示赞赏.

Say*_*Pal 2

我的方法是将树视图自定义元素放在导航骨架中的(外部)app.html上。那么自定义元素不应该通过更改路由而再次呈现。nav-bar.page-host

Aurelia 文档中似乎描述了类似的情况,就像您遇到的情况一样。请参阅本教程。也来自教程:

由 Aurelia提供router-view,是一个占位符,指示路由器应在何处呈现当前路由。

如果您需要根据某些特殊情况或路由更改树视图,则可以在树视图自定义元素中使用事件聚合器来处理此类特殊情况。本教程还展示了如何使用事件聚合器来同步自定义元素(请参阅本部分)。

希望这可以帮助。