2016-09-14 34 views
4

當Aurelia開始使用if.bind時,不會導致子視圖/視圖模型被破壞。它確實經歷了綁定/解除綁定/分離循環,我可以看到這對某些場景有意義。但我也希望能夠徹底銷燬view/viewModel並從頭開始重新創建它。我創建了一個plunker,它使用if.bind來展示我的最佳努力。我正在尋找關於如何將<我的其他元素>完全銷燬的建議。謝謝!如何強制Aurelia在不使用路由器的情況下銷燬/重新創建視圖/視圖模型對

回答

1

看起來您可以使用<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> 
+0

這比我使用'repeat.for'的第一次入侵更好。我仍然認爲這是一種黑客行爲,因爲我認爲撰寫是針對可能使用不同種類的viewModels的情況。 Jeremy Danyow [推薦](https://www.danyow.net/aurelia-custom-element-vs-compose/)儘可能使用Compose上的自定義元素。另外值得注意的是'@ transient'在這種情況下並沒有什麼不同,view/viewModel被視爲瞬態而不管。也許這種情況需要github問題? – FunkyCodeMonkey

+0

正確 - 我只是沒有清理臨時裝飾器,但它並不適用於此。在這種情況下,瞬態是默認行爲。你可以使用'@singleton()'來指示路由器重用實例。 –

+0

我很確定自定義元素無法使用單例視圖模型。因此,多個元素可以構建各自的視圖模型。但是這種情況有點不同 - 看起來模板引擎掛在元素引用上並將其添加回來,而不是從頭開始創建。 github問題可能會引發關於此行爲的一些對話。 –

相關問題