gpt4 book ai didi

javascript - knockout : can observable extenders be called without parameters?

转载 作者:行者123 更新时间:2023-11-29 15:36:17 25 4
gpt4 key购买 nike

在 Knockout.js 中,调用可观察扩展器的典型语法如下:

this.myObservable = ko.observable('foo').extend({myExtenderKey: myExtenderOption});

但是,如果我有一个不带参数的扩展器怎么办?例如,一个简单的记录器可能不需要任何参数。自动更新的“hasChanged”标志也不会。

大多数在野外的例子只是传递一个未使用的 bool 值:

this.myObservable = ko.observable('foo').extend({logsChanges : true});

这看起来不错,因为天真的读者会猜测 logsChanges 行为正在被激活。但 bool 值具有误导性,因为以下内容也有效:

this.myObservable = ko.observable('foo').extend({logsChanges : false});

我们也可以传递一个空值,但它似乎有点多余:

this.myObservable = ko.observable('foo').extend({logsChanges : null});

这也意味着参数可能被发送到 logsChanges 扩展器,即使它永远不应该被发送。

有没有一种方法可以调用不包含额外参数的扩展器?

最佳答案

查看the source for extend现在看来并非如此。除非有拉取请求,否则事情就是这样运作的。

但是,您可以做的是更新您的扩展器以真正遵守 bool 值:

function logsChanges(target, shouldLog) {
if (!shouldLog) return target;
// Alternatively, you could return `false`
// but returning `target` is more explicit
return function loggingHandler() {
// Log changes and update here.
};
}

关于javascript - knockout : can observable extenders be called without parameters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28371477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com