Asp.Net MVC4 でのユーザーの選択に基づいてタブを読み込む必要があります。各タブ要素は、部分ビューに関連しています。各部分ビューには、独自の knockout.js バインディングがあります。
各タブをクリックすると、以前に選択したタブの下に部分的なビューをレンダリングする必要があります。
ここにコードスニペットがあります
<div class="row-fluid top-pad-double" id="tabBasedGrowthDiv">
<ul class="nav nav-pills">
<li><a href="#tabCustomerInfo" data-toggle="tab" data-bind="click:$root.AddTab">CustomerInfo</a></li>
<li><a href="#tabPropertyInfo" data-toggle="tab" data-bind="click: $root.AddTab">PropertyInfo</a></li>
<li><a href="#tabPropertyInfo1" data-toggle="tab" data-bind="click: $root.AddTab">PropertyInfo1</a></li>
</ul>
<div class="tab-content pills pill-sections">
<div data-bind="template: { name: 'tabBasedGrowthTemplate', foreach: $root.tabs}"></div>
</div>
</div>
Knockout.js HTML テンプレート
<script type="text/html" id="tabBasedGrowthTemplate">
<div class="tab-pane" >
<div class="pill-header clearfix">
<h3>Some title</h3>
<div class="pull-right">
<a href="#" class="btn btn-mini" data-toggle="button" rel="tooltip" data-title="lock this section here" data-placement="top"><i class="icon-lock"></i></a>
<a href="#" class="btn btn-mini" rel="tooltip" data-title="close this section" data-placement="left"><i class="icon-remove"></i></a>
</div>
</div>
<div class="pill-content" data-bind="attr:{id: $data.id}">
@Html.Partial("tab based partial view name")
</div>
</div>
</script>
これは、ビュー モデルのおおよその実装です。
function TabBasedGrowthViewModel() {
var self = this;
self.tabs = ko.observableArray([TabViewModel]);
self.AddTab = function (){}
}
ノックアウトバインディング
<script type="text/javascript">
$(document).ready(function () {
ko.applyBindings(new TabBasedGrowthViewModel(), $("#tabBasedGrowthDiv").get(0));
});
</script>
上記の手順を実行すると、独自のノックアウト バインディングがあるため、部分ビューがレンダリングされるメイン ビュー モデルのノックアウト バインディングと競合します。knockout
上記の小見出しに示すように、テンプレートを使用して部分ビューをレンダリングする場合にのみ、この競合が発生しますKnockout.js Html Template
。
どんな助けでも大歓迎です。
前もってありがとう、Alphacoder