如何更新计算的可观察值

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>