どちらの方法でも成功しましたが、通常は、あなたが言及した最初のシナリオを使用します。1 つの全体的な親ビューモデルには、他のより具体的なビューモデルのインスタンスが含まれています。一般的な慣行では、applyBindings
頻繁に電話をかけないようにすることをお勧めします。ノックアウトの「with」バインディングについて簡単に言及することは、あなたのインスタンスに適しているようです: http://knockoutjs.com/documentation/with-binding.html
これにより、タブ内のバインディング式を、それらが表すビューモデルにより集中させることができます。
<script type="text/javascript">
var ParentViewModel = function(){
this.tabOneViewModel = new TabOneViewModel();
this.tabTwoViewModel = new TabTwoViewModel();
}
var TabOneViewModel = function(){
this.tabOneTitle = 'Tab One';
}
var TabTwoViewModel = function(){
this.tabTwoTitle = 'Tab Two';
}
$(function(){
var parentViewModel = new ParentViewModel();
ko.applyBindings(parentViewModel,$('#main')[0]);
});
</script>
<body>
<div id="main">
<div data-bind="with:tabOneViewModel">
<div data-bind="text:tabOneTitle"></div>
</div>
<div data-bind="with:tabTwoViewModel">
<div data-bind="text:tabTwoTitle"></div>
</div>
</div>
</body>
最終的には、DOM とビュー モデルをどのように構築するかは完全にあなた次第です。私たちが役立つとわかった一般的な例をレイアウトするだけです。