通知を処理するために他のビューに含めることができる部分ビューを作成しました。
<div id="notifications">
<!-- ko with: $root.currentNotification -->
<span data-bind="text: notificationType"></span>
<span data-bind="text: friendlyMessage"></span>
<!-- ko if: $root.technicalMessageShown -->
<span data-bind="text: technicalMessage"></span>
<!-- /ko -->
<button data-bind="click: $root.toggleTechnicalMessage, text: $root.technicalMessageButtonText"></button>
<button data-bind="click: $root.dismissNotification">Dismiss</button>
<!-- /ko -->
<pre data-bind="text: ko.toJSON($root, null, 2)"></pre>
</div>
ビューは、親ビューで次のバインディングを使用してビューモデルにバインドされます。
var notificationsViewModel = new NotificationsViewModel();
ko.applyBindings(notificationsViewModel, document.getElementById("notifications"));
var viewModel = new MainViewModel();
ko.applyBindings(viewModel);
レンダリングされると、currentNotificationがビューモデルに存在していても、'ko with:$root.currentNotification'内の要素はDOMに含まれません。
部分ビューの最後の行から表示されたビューモデル:
{
"allNotifications": [
{
"id": "0",
"notificationType": "Error",
"friendlyMessage": "Lorem ipsum dolor sit amet.",
"technicalMessage": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque elit nulla, porta ac condimentum in, condimentum sed dui. Aliquam interdum."
}
],
"currentNotification": {
"id": "0",
"notificationType": "Error",
"friendlyMessage": "Lorem ipsum dolor sit amet.",
"technicalMessage": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque elit nulla, porta ac condimentum in, condimentum sed dui. Aliquam interdum."
},
"technicalMessageButtonText": "More Info"
}
ノックアウトに現在の通知が表示されない理由はありますか?