仅在单击的函数内部而不是在 Type Script 代码的 UI 中更新可淘汰可观察值
Posted
技术标签:
【中文标题】仅在单击的函数内部而不是在 Type Script 代码的 UI 中更新可淘汰可观察值【英文标题】:knockoutobservable value update only inside the clicked function but not in the UI in Type Script code 【发布时间】:2020-07-28 06:50:07 【问题描述】:请我从昨天开始就陷入这个问题而没有修复:
当我点击剔除复选框时,按钮将发送真假值,通过点击,事件到达 driverSelected 函数,将打印该项目并且它工作完美,但我需要用其他过滤选择的数据信息,但它没有改变是空的
<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) 也会显示为 [object object
【问题讨论】:
您必须通过使用新值调用它来设置一个可观察值:this.assignedDriver(item.driver)
。
【参考方案1】:
您正在重新分配 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;
请参阅 the documentation 对此进行解释。
在这种情况下,解决方法是修改 driverSelected
中 if 语句的前两行。
driverSelected = () =>
return (item, ui: any) =>
if (item.isSelectedDriver())
this.assignedDriver(item.driver);
console.log(this.assignedDriver());
return true;
;
;
【讨论】:
以上是关于仅在单击的函数内部而不是在 Type Script 代码的 UI 中更新可淘汰可观察值的主要内容,如果未能解决你的问题,请参考以下文章
单击表视图使其仅在第一次单击时附加字符串,而不是在 didSelectRowAtIndexPath 中的另一次单击时附加字符串
仅在左侧列中显示表格,而不是在 phpmyadmin 中显示数据库
GMUClusterRendererDelegate 仅在渲染集群时才显示标记图标视图,而不是在该 swift 5 之前