2016-06-17 10 views
0

私は別のページHome.html、people.htmlを読み込み、各ページに独自のviewmodel jsファイル(Home.js、people)があるコンテナページIndex.html(これはマスターページとして扱うことができます)を持っています。 js)。私はHome.htmlからPeople.htmlに移動します。 Home.jsではAjaxの呼び出しを行い、People.htmlページに行くとPeople.jsで取り込むデータが必要です。私はPublishOnとSubscribeToを使用しようとしましたが、結果が得られませんでした。main.jsで変数を作成しようとしましたが、Home.jsとpeople.jsの両方でそれを使用しようと思っていましたが、$ rootを使ってアクセスできました。しかし私はこれをHTMLページでのみ行うことができますが、Jsではできません。 私は自分の問題文で明確です。 **注:**設定にRequireJsも使用しています。アプリケーション全体を通してKnockoutJsのグローバル変数を維持する方法は?

私にこれを手伝ってください。

+0

問題を正しく理解しているかどうかわかりません。 home.js viewmodelにいくつかのデータが保存されており、リダイレクト後に他のviewmodelからこのデータにアクセスする必要がありますか?または、実際には単一のページであり、両方のビューモデルがロードされており、これらのビューモデルに互いにアクセスする必要があるだけですか? – Martin

+0

「Home.jsではAjaxコールを作成し、People.jsで取得するデータが必要です...」 - これが私を失った場所です。あなたが(main.jsがどこで使われているか説明していない)コンテナに変数を追加して、どちらのビューモデルからでもアクセスできるようにしてください。おそらく、それを間違った範囲に追加したり、間違った範囲からアクセスしたりしているでしょうか? – awj

+0

@Martin:あなたはhome.js viewmodelにいくつかのデータを保存しており、リダイレクト後に他のviewmodelからこのデータにアクセスする必要がありますか? "はい"。私は一度に両方のページを読み込んでいません。 – yashwanth

答えて

0

データが本当にグローバルである場合、新しいAMD/RequireJSモジュールを作成して、Home.htmlPeople.htmlのViewModelsで依存関係を識別する方法があります。この共有モジュールでデータを管理できるようにします。 Ajaxの呼び出しをHomeのViewModelからこの新しい共有モジュールに移したいと思うでしょう。

$rootを使用すると、ビュー間に暗黙の契約が作成されます。これを維持することは難しく、子ビューのパラメータを使用して関係を文書化する方がよいと言う人もいます。データがグローバルではなく、特定のビューの2つの子ビュー間でのみ共有される場合は、パラメータを使用して子ビューにデータを渡すことができます。 KnockoutコンポーネントまたはOracle JETモジュールを使用していますか?両方とも、親Viewから子ViewModelにパラメータを渡すことができます。

+0

ViewModelsのDependencyパラメータを渡すと、私の仕事が完了しました!!ありがとう:-) – yashwanth

関連する問題