替换作为参数发送的可观察的淘汰赛

IBot

我要发送两个可观察值作为参数,我想用另一个可观察值替换这两个;由于某种原因,它不会被替换,但是如果我更改可观察对象的值,它将起作用。

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;
        }
    }

在这种情况下,我想用该项目的可观察值替换发送的变量,但它似乎不起作用...

TJ人群

在这种情况下,我想替换发送的变量...

你不能 您拥有的参数没有以任何方式连接到用作函数参数的变量(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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

淘汰赛:更改可观察值

淘汰赛:可以在没有参数的情况下调用可观察的扩展程序吗?

淘汰赛可观察到多个订阅

淘汰赛如何设置可观察儿童的价值

可观察到淘汰赛更新

淘汰赛可观察的订阅多次触发

在淘汰赛中对可观察的列表进行排序

淘汰赛JS和可观察的单选按钮

淘汰赛可观察到的最新价值

分配时淘汰赛可观察数组被覆盖

淘汰赛:找出计算出的可观察触发

淘汰赛订阅可观察的复杂对象的任何更改

带有字符的淘汰赛追加可观察对象

淘汰赛JS:从ViewModel可观察数组创建Json

淘汰赛:可观察输入数组的 observableArray

在$ foreach中使用$ data作为组件参数的淘汰赛

从可观察到的淘汰赛中删除最后一个角色

如何在html上显示此可观察到的淘汰赛?

计算出的强制淘汰赛在更换可观察到的内部后重新评估

是否让淘汰赛计算对象订阅不在初始执行路径中的可观察对象?

设置新值时,淘汰赛力量将可观察的事件通知订户

输入值更改时,淘汰赛可观察字段未更新

淘汰赛订阅/事件类型系统没有可观察的?

淘汰赛-添加了可观察到的未在新对象上更新的功能

淘汰赛可观察订阅:超过最大调用堆栈

淘汰赛:Ajax调用后无法映射计算的可观察物

用JavaScript编写类似C#的扩展以实现可观察到的淘汰赛

选择的下拉值更改时,可观察到的淘汰赛未更新

淘汰赛js-获取可观察的字符串长度