我正在使用Knockout Secure Binding(KSB)使淘汰赛与Chrome浏览器扩展程序中的内容安全策略兼容。
以下内容适用于Knockout的默认活页夹,其中plaintext
是可观察到的值,它返回一个字符串:
<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()
中根本不会接受任何内容。在阅读文档和回购问题时,我没有发现不与KSB搭配使用match或regex的任何知识。
我在这里想念什么?
答案 0 :(得分:1)
默认的Knockout绑定提供程序允许任何有效的JS表达式。 KSB的目的是改变这种行为,因此在某种意义上说类似的东西将不再起作用。
您可能应该将正则表达式移动到计算出的可观察值。