我在视图模型中有这个:
self.selectedItem = ko.observable();
self.fullName = ko.computed(function () {
var selectedItem = ko.unwrap(self.selectedItem);
if (selectedItem) {
return ko.unwrap(selectedItem.FullName);
}
});
self.editStatus = function(item) {
self.selectedItem = item;
if (self.selectedItem === null) {
alert("No items selected");
}
$('#editStatus').modal('show');
}
然后我有一个表格,其中包含一个链接:
<td data-bind="if: CanEditPostCloseStatus"><a data-bind="text: OrderPostCloseStatusName, click: $parent.editStatus"></a></td>
然后我有一个bootstrap模式,激活时应该显示fullName。
<div class="modal-body">
<p data-bind="text: fullName" ></p>
</div>
问题是模态总是显示空的fullName。
当selectedItem发生更改以便显示fullName时,如何告诉Knockout更新绑定?
答案 0 :(得分:1)
您的代码可以简化。首先让我们修复一个错误:self.selectedItem
是一个可观察的,所以要更新它,我们需要像函数一样调用它。
self.editStatus = function(item) {
self.selectedItem(item); // fixed this assignment
if (!self.selectedItem()) { // fixed reading this value
alert("No items selected");
}
$('#editStatus').modal('show');
}
现在在模式中,我们可以使用淘汰赛with binding
<div data-bind="with: selectedItem" class="modal-body">
<p data-bind="text: fullName" ></p>
</div>