我的代码中包含一个if绑定,我想在单击按钮后重新评估或调用if
我尝试使用valueHasMutated(),但没有再次通过if调用运行。
<!-- ko if: $data.Status() == "Underwriting" -->
<div data-bind="css:$data.getStatusImageClass(DealerCenter.Models.Enumerations.DealStatusColor.Red)"> </div>
<!-- /ko -->
<!-- ko if: $data.Status() != "Underwriting" -->
<div data-bind="css:$data.getStatus('Underwriting')"> </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
答案 0 :(得分:1)
此声明:
this.Status = ko.observable(statusStage);
替换可观察到的敲除操作,以处理模型的Status
属性与DOM元素的绑定。在此行之后,DOM仍附加到包含先前值的旧可观察对象。这就是为什么即使手动触发valueHasMutated
也不会反映出更改的原因。 (无论如何都不应该手动调用它,也应该在新的Observable上调用它
因此,不要替换可观察值,而是使用新值分配当前可观察值:
this.Status(statusStage);