我是 KnockoutJS 的新手。我知道如何定义将用于更改元素文本(或从文本元素更新)的可观察对象,但是,我希望模型中的数据实际上是具有读/写访问权限的正则表达式。我想使用textarea
类似设置它:
<textarea data-bind="value: regex"></textarea>
并使用以下命令在页面上显示:
<span data-bind="text: regex"></span>
现在初始化工作:
//inside the model
this.regex = ko.observable( /,/g );
并且两者都textarea
得到span
更新(因为本机正则表达式变量具有一个toString()
可以很好地显示正则表达式的字符串表示的函数)。但是当我更改时regex
不会更新。似乎设置可观察对象失败了。textarea
span
这是可以理解的,因为value
fromtextarea
只是一个文本,为了将其转换为实际的正则表达式,需要一些代码。我有代码。function str2regex()
让我们用类似这样的主体来调用它:
//this is pseudo code and doesn't neccesarily work
function str2regex( str )
var r = str.match( "^\/(.+?)\/([mig])*$" );
if ( r ) {
if ( r[2] === null ) {
return new RegExp( r[1] );
} else {
return new RegExp( r[1], r[2] );
}
}
return null;
}
如何使用来自的文本在我的模型中设置类型正则表达式的值textarea
?