如何更新计算的可观察值
How to update value of computed observable
我在视图模型中有这个:
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');
}
然后我有一个 table,其中有一列是 link:
<td data-bind="if: CanEditPostCloseStatus"><a data-bind="text: OrderPostCloseStatusName, click: $parent.editStatus"></a></td>
然后我有一个 bootstrap 模式,激活后应该显示全名。
<div class="modal-body">
<p data-bind="text: fullName" ></p>
</div>
问题是模式总是显示一个空的全名。
如何在 selectedItem 更改时告诉 Knockout 更新绑定以便显示 fullName?
您的代码可以简化。首先让我们修复一个错误: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');
}
现在在modal中,我们可以使用knockout的with binding
<div data-bind="with: selectedItem" class="modal-body">
<p data-bind="text: fullName" ></p>
</div>
我在视图模型中有这个:
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');
}
然后我有一个 table,其中有一列是 link:
<td data-bind="if: CanEditPostCloseStatus"><a data-bind="text: OrderPostCloseStatusName, click: $parent.editStatus"></a></td>
然后我有一个 bootstrap 模式,激活后应该显示全名。
<div class="modal-body">
<p data-bind="text: fullName" ></p>
</div>
问题是模式总是显示一个空的全名。
如何在 selectedItem 更改时告诉 Knockout 更新绑定以便显示 fullName?
您的代码可以简化。首先让我们修复一个错误: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');
}
现在在modal中,我们可以使用knockout的with binding
<div data-bind="with: selectedItem" class="modal-body">
<p data-bind="text: fullName" ></p>
</div>