2016-06-28 1 views
1

デコレータ@singleton(false)をビューモデルに割り当てても、ビューモデルは起動/非アクティブ化の間にシングルトンとして保持されますが、バインディングやコンポーネントなどは保持しません。無効にするとビューがアンバウンドしないようにする方法はありますか?

(Iは、それらが失活上に配置された容器内に格納されているためであると仮定する。)

結果はシングルトンビューモデルとビューのすべての非活性化/活性化の際に、ビューが国連であるということです - 結合され、次に再結合される。

バインディングを非アクティブ化/アクティブ化の間中存続させることは可能ですか?

答えて

0

この1つは私のために良いです。また、なぜそれを実装することがAureliaチームの最優先事項ではないのか、私は混乱しました。

これにはかなりの労力を要します。私はここにGistのコードを入れました:https://gist.github.com/Vaccano/1e862b9318f4f0a9a8e1176ff4fb727e

すべてのファイルは、main.tsファイルの変更である最後のものを除いてすべて新しいものです。また、すべてのコードはTypescriptにあります。 Javascriptを使用している場合は、翻訳する必要があります。

基本的な考え方は、ビューとビューモデルをキャッシュすることです。そして、ルータをキャッシングルータに置き換えてください。したがって、ユーザーがページに戻ると、最初に、作成済みのビュー/ビューモデルがあるかどうかを確認し、新しいビュー/ビューモデルを作成する代わりにそのモデルを使用します。

注:これは「コンポーネント」レベルのコードではありません。これは、私がこれを使用するシナリオで動作することをテストしたことを意味します。

私はこの変更をここから始めました:https://github.com/aurelia/router/issues/173もう1人のユーザー(Scapal)が彼のために働いてそこに投稿しました。私が投稿しているものがあなたのために働かないなら、彼はあなたを助けるかもしれません。

+0

ありがとう@Vaccano –

+0

私はそれについて考えました。 まず、私はそれを述べなかったが、私はAureliaに組み込まれた解決策を探していた。 あなたが提案したコードは、言い換えれば「かなりの量のコード」です。 また、この問題が議論されている他の長いコーディングソリューションが公開されている開いたaurelia-routerの問題を指摘しました。 基本的に私に答えを与えてくれました: "いいえ、私が望むことをするための組み込みの方法も、重要なコーディングを伴わない方法もありません.Aureliaチームはいつか実装するかもしれませんがこれまでのところ、彼らのために最優先されているように見える。 –

0

私はまたこれに対する答えに興味があります。 私は今、私から完全な馬鹿を作っていますが、なぜaurelia-history navigate(..)コマンドを使用しないのですか?

+0

提案していただきありがとうございますが、どのように役立つか分かりません。 –

関連する問題