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

吉米·布雷克·麦基

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

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

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

在野外的大多数示例只是传递一个未使用的布尔值:

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

这看起来不错,因为幼稚的读者会猜测某个logsChanges行为正在被激活。但是布尔值具有误导性,因为以下内容也可以起作用:

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

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

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

这也暗示着一个参数可能会被发送到logsChanges扩展器,即使它永远不会被发送。

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

肖恩·维埃拉(Sean Vieira)

纵观来源为extend它不会出现这样的情况现在。除非有拉取请求,否则事情就是这样。

但是,您可以做的是更新扩展程序以实际使用布尔值:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

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

在淘汰赛 js 中保持属性不可观察 vs 可观察有什么好处吗?

淘汰赛:更改可观察值

当儿童可观察到的更新时,淘汰赛js css似乎没有重新计算

是否可以在没有所有参数的情况下调用/等待异步函数?

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

可以在没有类的情况下调用函数吗?的PHP

我们可以在没有 self 的情况下调用类方法吗?

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

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

无法在没有任何参数的情况下调用对象

淘汰赛中可以有重叠的装订区域吗

C预处理程序:#define可以在没有括号的情况下调用的宏

可以在没有连接的情况下调度动作吗?

淘汰赛可观察到多个订阅

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

可观察到淘汰赛更新

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

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

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

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

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

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

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

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

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

是否可以在没有显式专门化的情况下调用可变参数模板函数?