Knockout で次のことを行う最善の方法を理解するのに苦労しています。
複数ページのサーバー側アプリを Knockout に移植しています。これは、さまざまなページでさまざまな機能とデータを実行します。たとえば、次のようになります。
- すべてのユーザーを一覧表示する
- ユーザーページを表示する
- ユーザーページを編集する
- アカウント設定
- 等
これらのさまざまなページは、共通のヘッダー、サイドバー、およびフッターと共に、各ページの主要部分に表示されます。
すべてのページ (ヘッダーとサイドバー) に共通のデータがあり、これを「単一ページ」アプリのように動作させたい (セクション間のアニメーションなど)
フィードバックをお待ちしておりますが、最善のアプローチは次のとおりだと思います。
- 「ページ」ごとにサブモデルを持つ 1 つのメイン モデル
- ヘッダー、サイドバーなどに適用可能な一般的な観察対象
- 「アクティブなページ」とテンプレートを示すオブザーバブル
例えば:
var MainModel = {
listUsersModel: { ... },
userModel: { ... },
accountModel: { ... },
commonProperty: ko.observable('Blah'),
anotherCommonProperty: ko.observable('Blah'),
activeSection: ko.observable('listUsers')
}
これはうまくいくと思いますが、「ページを切り替える」方法と、サーバー側の新しいデータで新しいページのモデルを更新する方法については少し曖昧です。
これを行うための最良/唯一の方法は次のとおりです。
MainModel.userModel.userId(123456)
// userModel above subscribes to userId changes, to get new server via ajax
MainModel.activeSection = 'viewUser'
?