knockout.js knockout可观察值仅在单击的函数内更新,而不在类型脚本代码的UI中更新

ss2ws0br  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(179)

请我从昨天没有解决这个问题:
当我点击knockout复选框时,按钮将发送true-false值,并通过点击,事件到达driverSelected函数,将打印项目,它工作正常,但我需要用其他信息筛选选定的数据,但它不会更改为空

  • HTML格式

<input type="checkbox" data-bind=" checked:isSelectedDriver , click:$root.driverSelected()" />

this.assignedDriver = ko.observable(new Model.Driver());

视图模型功能

driverSelected = () => {
        return (item, ui: any) => { // lambda expression  

            if (item.isSelectedDriver()) {

                this.assignedDriver = ko.observable(item.driver);

                this.assignedDriver.valueHasMutated;

                console.log(this.assignedDriver());

                return true

            }
        }
    }
  • HTML中的结果显示了默认值,即使删除属性值(wbc_name),该默认值也会清空而不会出错,即show me [ object object }
b91juud3

b91juud31#

您正在重新指定this.assignedDriver的值,而不是在JS中设置该值。
若要将值指派给可观察值,您可以使用您要设定的值来呼叫可观察值,例如:

this.thing = ko.observable(5); // Observable created, initial value 5.
this.thing(42); // Sets the value of the observable, value is now 42;

请参阅对此进行说明的文档。
在这种情况下,修复方法是修改driverSelected中if语句的前两行。

driverSelected = () => {
    return (item, ui: any) => {
        if (item.isSelectedDriver()) {
            this.assignedDriver(item.driver);
            console.log(this.assignedDriver());
            return true;
        }
    };
};

相关问题