aurelia で動的合成を実装しようとしています。より正確には、タブを作成しており、新しいタブごとに新しい div を追加しています。内部では、compositionEngine.compose(...) を使用してそのタブに対応するコンポーネントを追加しています。実際の例は、https ://gist.run/?id=08a04dad8d94af01989d789a216195f3 にあります。しかし、私はいくつかの奇妙な行動を経験しています。たとえば、同じコンポーネントを 2 つのタブで 2 回開くと、viewModel が再利用 (共有) されているように見えます。モジュール 2 を 1 回開き、[変更] をクリックしてカウンターをインクリメントしてから、もう一度開きます。以前の値が表示されます。何か案は?
2 に答える
0
ジェームスさん、ありがとうございます。その通りです。その間に、問題の原因がわかりました。compositionEngine は、もちろんデフォルトで各クラスのシングルトンを返す container.get(...) を呼び出します。あなたが言ったように @transient() を追加すると、コンテナは新しいインスタンスを返します。私がまだ理解していないのは、aurelia が他のケースのモデル インスタンスをどのように (どこで) 作成するかということです。コンテナーが実際にツリーである場合、子コンテナー (container.createChild() の後に作成) で registerInstance を使用してモデルを登録する必要があると思います。
于 2016-09-02T16:48:48.523 に答える