私はブートストラップポップオーバーを生成する必要があります。私は1つか2つの記事を見つけましたが、私の状況では100%動かないようです。 Popoverを表示させることはできますが、テンプレート内のバインディングはバインドされていません。ここでノックアウトのカスタムbindingHandler内でカスタムテンプレートにバインドする方法
は私のカスタムbindingHandler
です:
ko.bindingHandlers.popover = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var $element = $(element);
var attribute = ko.utils.unwrapObservable(valueAccessor());
var placement = attribute.placement || "top";
var trigger = attribute.trigger || "click";
var template = attribute.template;
var container = attribute.container || false;
var boundTemplate = $(template).html();
$element.popover({
container: container,
placement: placement,
trigger: trigger,
html: true,
content: boundTemplate
});
ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
$element.popover("destroy");
});
}
};
html
は、このように結合以内に私はブートストラップは、内Popoversのためにこれを必要とすることを見てcontainer
がbody
として渡すことができ、table
のtd
ノード内にあります表:
<span class="bottom-right faded"
data-toggle="popover"
title="Weekly Breakdown:"
data-trigger="hover"
data-bind="text: Number(PayPeriodTime()).toFixed(2), css: { 'less-hours': HasRequiredHours() === false, 'requirement-met': (HasRequiredHours() && WorkDays() > 0) }, popover: { template: '#weekly-template', placement: 'left', container: 'body', trigger: 'hover' }"></span>
最後には、ここに私のカスタムテンプレートです
<script type="text/html" id="weekly-template">
<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>
<table class="table table-bordered">
<tr>
<td>Full Weeks Hours</td>
<td data-bind="text: Number(TotalTime()).toFixed(2)">5</td>
</tr>
<tr>
<td>Required Hours</td>
<td data-bind="text: Number(RequiredHours()).toFixed(2)"></td>
</tr>
<tr>
<td>Entered Hours</td>
<td data-bind="text: Number(PayPeriodTime()).toFixed(2)"></td>
</tr>
<tr>
<td>Remaining Needed</td>
<td data-bind="text: Number(RequiredHours() - PayPeriodTime()).toFixed(2)"></td>
</tr>
</table>
</script>
pre
要素は、ここに何を入れても一見空ではありません。 hover
にポップアップが表示されると、htmlは表示されますが、私のko項目はレンダリングされません。私が見ているのは、Full Weeks Hours
のために、何かが入ってくるのを見るために強制する5
です。結合内
boundTemplate
変数は中内完全なHTMLとKOコードを持っている。私はそれがcontent: boundTemplate
とポップオーバーに入れされる前に、いくつかの値にNumber(TotalTime()).toFixed(2)
に変わります処理方法のいくつかの並べ替えてこれを実行する必要があるように見えます。
正しい答えを投稿し、受け入れられたように、その答えをマークしてください。 – Nisarg
@ NisargShah解決策を答えに移しました。 2日後(私が許可されているとき)、私はそれを答えとしてマークします。 – Grandizer
ありがとうございました! – Nisarg