为什么knockout-secure-binding会遇到这个语法错误

Why is this syntax error encountered in knockout-secure-binding

我正在使用 Knockout Secure Binding (KSB) 使 Knockout 与 Chrome 浏览器扩展中的内容安全策略兼容。

以下适用于 Knockout 的默认活页夹,其中 plaintext 是一个可观察值,returns 一个字符串:

 <section data-bind="foreach: plaintext().match(/.{1,17}/g)">

但是当尝试应用与 KSB 的绑定时,控制台会记录此错误:

{
   name: "SyntaxError",
   message: "Expected ')' but got '/'",
   at: 28,
   text: "foreach: plaintext().match(/.{1,17}/g)"
}

由于 / 似乎是我尝试使用以下语法创建 RegExp 的问题:

 <section data-bind="foreach: plaintext().match(new RegExp('.{1,17}', 'g'))">

但是KSB同样抱怨,这次:

{
   name:"SyntaxError",
   message:"Expected ')' but got 'n'",
   at:28,
   text:"foreach: plaintext().match(new RegExp('.{1,17}', 'g'))"
}

这表明它根本不会接受 match() 括号内的任何内容。在阅读文档和 repo 问题时,我没有发现任何关于不使用 KSB 的匹配或正则表达式。

我在这里错过了什么?

默认的 Knockout 绑定提供程序允许任何有效的 JS 表达式。 KSB 的目的是改变这种行为,所以像这样的东西不再起作用是有道理的。

您可能应该将您的正则表达式移动到计算的可观察量。