如何重新评估if绑定?

时间:2019-09-01 22:59:22

标签: knockout.js

我的代码中包含一个if绑定,我想在单击按钮后重新评估或调用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();

        }

如果“状态”的值更改了,我想显示另一个Div

1 个答案:

答案 0 :(得分:1)

此声明:

this.Status = ko.observable(statusStage);

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

因此,不要替换可观察值,而是使用新值分配当前可观察值:

this.Status(statusStage);