如何重新评估 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)"> </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();
}
如果 Status 的值改变了我想显示另一个 Div
这条语句:
this.Status = ko.observable(statusStage);
替换了处理模型 Status
属性 与 DOM 元素绑定的淘汰可观察对象。在这一行之后,DOM 仍然附加到包含先前值的旧 observable。这就是为什么更改没有反映出来,即使在手动触发 valueHasMutated
之后也是如此。 (无论如何都不应该手动调用它,它也会在新的可观察对象上调用)
因此,不要替换可观察对象,而是为当前可观察对象分配新值:
this.Status(statusStage);
我的代码中有一个 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();
}
如果 Status 的值改变了我想显示另一个 Div
这条语句:
this.Status = ko.observable(statusStage);
替换了处理模型 Status
属性 与 DOM 元素绑定的淘汰可观察对象。在这一行之后,DOM 仍然附加到包含先前值的旧 observable。这就是为什么更改没有反映出来,即使在手动触发 valueHasMutated
之后也是如此。 (无论如何都不应该手动调用它,它也会在新的可观察对象上调用)
因此,不要替换可观察对象,而是为当前可观察对象分配新值:
this.Status(statusStage);