ノックアウト テンプレートをブートストラップ ポップオーバーのコンテンツとして使用するにはどうすればよいですか?
2 に答える
あなたが探しているものは正確には明らかではありません。これが役立つことを願っているサンプルフィドルです:
次の 2 つの概念を示します。
1) カスタム バインディングを使用して目的のポップオーバー属性を追加する
2) テンプレートを使用して、ポップオーバー付きのボタンを作成するために使用される HTML (カスタム バインディングを含む) をカプセル化します。
ポップオーバーに送信できるオプションは次のとおりです。
編集: http://jsfiddle.net/V3nVd/7/
レンダリングされたテンプレートから html コンテンツをプルすることを示すようにフィドルを更新しました。また、ポップオーバーの初期化での html オプションの使用にも注意してください。
テキストバインディングを値バインディングに変更した場合、値はレンダリングされませんでした。jqueryでIDを持つ要素を選択し、コンソールに値を出力すると、値は正しいですが、表示されません。
<center>
<h2>Popover Demo</h2>
<div data-bind="template: {name: 'popoverTemplate', foreach: commands}"></div>
</center>
<script type="text/html" id="popoverTemplate">
<div style="display:none;" data-bind="attr: {'id': $data.command + 'Content'}, template: {name: 'popoverContent', data: $data.content}"></div>
<a href="#" class="btn" data-bind='text: $data.command, popover: $data'></a>
</script>
<script type="text/html" id="popoverContent">
<p>Name: <input type="text" data-bind='value: $data.name'></p>
<p>Email: <b data-bind='text: $data.email'></b></p>
</script>
</ p>
これが例ですhttp://jsfiddle.net/mounir/V3nVd/15/
ありがとう
編集:
これは完全に機能する例です。たとえば、ボタンをルートviewModelの関数に関連付けたい場合は、バインディングコンテキスト$rootと$parentを含めるようにを変更ko.applyBindings()
しました。ko.applyBindingsToDescendants
$(element).click(function() {
$(this).popover('toggle');
var thePopover = document.getElementById(attribute.id+"-popover");
childBindingContext = bindingContext.createChildContext(viewModel);
ko.applyBindingsToDescendants(childBindingContext, thePopover);
});
@JSFiddlehttp : //jsfiddle.net/mounir/Mv3nP/4/をご覧ください