基本的に、「テンプレート」データバインディングを使用するRobNの非常に単純なテンプレートスイッチャーhttp://jsfiddle.net/rniemeyer/XYz8M/を実装しようとしています。
(---SO wants code here - see fiddle for complete code---)
<div id="templateContent" data-bind='template: { name: currentView() }'></div>
var viewModel = {
currentView: ko.observable("template-1"),
toggleView: function() {
this.currentView(this.currentView() === "template-1" ? "template-2" : "template-1");
}
};
ko.applyBindings(viewModel);
これを行う他の多くの単純な例を見てきましたが、すべてがロードされたテンプレートごとに同じ viewModel クラスを使用しています。例外 - RobN の SamplePresentation アプリ (別のリンクを投稿するのに十分な担当者ポイントがありません)。彼は section.activate() メソッドでこれを行っていると思いますが、私には不明です。
この概念を実際のアプリで使用したいのですが、バインディング コンテキストの問題があります。これが私がやろうとしていることです: http://jsfiddle.net/jockor/DSEDh/4/
This line intentionally left blank (please see fiddle vs. mangling code here)
基本的に、ナビゲーション リンク/ボタンが押されたときに、本文のコンテンツ パネルを別のテンプレートと交換したいだけです。そのテンプレートには、独自の viewModel に基づく独自のデータが必要です。
上記のフィドルは、この概念の単純化されたバージョンでの私の目的です。猫と犬のパネルを切り替えようとしているだけです。私が遭遇したのは、「テンプレート」データバインドにバインドされたデータが、ロードされた猫/犬のテンプレートに使用されていることです。
これを正しく行っているのか、それとも「テンプレート」バインディングの概念を悪用しているのか、誰か教えてもらえますか?