【发布时间】:2016-09-14 22:02:10
【问题描述】:
从 Aurelia 开始时,if.bind 不会导致子视图/视图模型被破坏,这让我感到惊讶。它确实经历了绑定/取消绑定附加/分离循环,我可以看到这在某些情况下是如何有意义的。但我也希望能够完全破坏视图/视图模型并从头开始重新创建它。我创建了一个plunker,展示了我使用if.bind 所做的最大努力。我正在寻找有关如何完全销毁
【问题讨论】:
标签: aurelia aurelia-templating
从 Aurelia 开始时,if.bind 不会导致子视图/视图模型被破坏,这让我感到惊讶。它确实经历了绑定/取消绑定附加/分离循环,我可以看到这在某些情况下是如何有意义的。但我也希望能够完全破坏视图/视图模型并从头开始重新创建它。我创建了一个plunker,展示了我使用if.bind 所做的最大努力。我正在寻找有关如何完全销毁
【问题讨论】:
标签: aurelia aurelia-templating
看起来您可以使用<compose> 元素将自定义元素视为视图/视图模型,从而使用瞬态创建行为。 See compose documentation
plunker: https://plnkr.co/edit/vKsQsHKsIp4vTVjG5G7f?p=preview
<template if.bind="someBoolean">
<compose view-model="my-other-element.js"></compose>
</template>
【讨论】:
repeat.for 更好。我仍然认为这是一种 hack,因为我相信 compose 适用于可能使用不同类型视图模型的情况。还有 Jeremy Danyow recommends 尽可能使用自定义元素而不是 Compose。另外值得注意的是@transient 在这种情况下没有任何区别,视图/视图模型无论如何都被视为瞬态。也许这种情况需要 github 问题?
@singleton() 指示路由器重用该实例。