我要发送两个可观察值作为参数,我想用另一个可观察值替换这两个;由于某种原因,它不会被替换,但是如果我更改可观察对象的值,它将起作用。
private searchAndReplace = (flag: string, observable1: KnockoutObservable<string>, observable2: KnockoutObservable<string>) => {
const itemFound = this.items.find((item) => item.flag === flag);
if (itemFound) {
observable1 = item.observableX;
observable2 = item.observableY;
}
}
在这种情况下,我想用该项目的可观察值替换发送的变量,但它似乎不起作用...
在这种情况下,我想替换发送的变量...
你不能 您拥有的参数没有以任何方式连接到用作函数参数的变量(JavaScript是字符串传递值,它没有将引用传递给变量的传递引用。功能)。
显然,如果只想设置这些可观察值,则可以执行以下操作:
if (itemFound) {
observable1(item.observableX());
observable2(item.observableY());
}
您也可以订阅新的Observable,但最终可能会得到很多订阅:
// Probably a bad idea
if (itemFound) {
item.observableX.subscribe(observable1);
item.observableY.subscribe(observable2);
}
...但是如果您真的想自己替换可观察变量,最好的办法可能是searchAndReplace
返回一对应该替换现有可观察变量的变量:
private searchAndReplace = (flag: string, observable1: KnockoutObservable<string>, observable2: KnockoutObservable<string>) => {
const itemFound = this.items.find((item) => item.flag === flag);
if (itemFound) {
return [item.observableX, item.observableY];
}
return [observable1, observable2];
}
然后在调用它的地方使用解构分配:
[original1, original2] = searchAndReplace("flag", original1, original2);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句