如何重新评估 if 绑定?

how to re-evaluate an if binding?

我的代码中有一个 if 绑定,我想在单击按钮后重新评估或调用它

我尝试使用 valueHasMutated() 但它没有再次通过 if 调用 运行。

<!-- ko if: $data.Status() == "Underwriting" -->
<div data-bind="css:$data.getStatusImageClass(DealerCenter.Models.Enumerations.DealStatusColor.Red)">&nbsp;</div>
<!-- /ko -->
<!-- ko if: $data.Status() != "Underwriting" -->
<div data-bind="css:$data.getStatus('Underwriting')">&nbsp;</div>
<!-- /ko -->

这是我的 ViewModel 部分

 Status: KnockoutObservable<string> = ko.observable("") ;

        stageStr(stage: any, subStage: any) {
            statusStage = stage;
            statusSubStage = subStage;
            console.log(statusStage, statusSubStage);
            this.Status = ko.observable(statusStage);
            this.Status.valueHasMutated();

        }

如果 Status 的值改变了我想显示另一个 Div

这条语句:

this.Status = ko.observable(statusStage);

替换了处理模型 Status 属性 与 DOM 元素绑定的淘汰可观察对象。在这一行之后,DOM 仍然附加到包含先前值的旧 observable。这就是为什么更改没有反映出来,即使在手动触发 valueHasMutated 之后也是如此。 (无论如何都不应该手动调用它,它也会在新的可观察对象上调用)

因此,不要替换可观察对象,而是为当前可观察对象分配新值:

this.Status(statusStage);