我是KnockoutJS的新手。我知道如何定義將用於更改元素文本(或從文本元素更新)的observable,但是,我希望模型中的數據實際上是一個具有讀/寫訪問權限的正則表達式。我想用一個textarea
喜歡設置:在knockoutjs中綁定正則表達式作爲可觀察對象
<textarea data-bind="value: regex"></textarea>
而使用顯示在頁面上:
<span data-bind="text: regex"></span>
現在初始化工作:
//inside the model
this.regex = ko.observable(/,/g);
而且兩者的textarea
和span
得到更新(因爲本地正則表達式變量有一個toString()
函數,它可以非常好地顯示字符串表示形式的正則表達式)。但是當我更改textarea
中的regex
時,span
不會更新。這似乎是設置可觀察的是失敗的。
這是可以理解的,因爲textarea
中的value
只是一個文本,爲了將其轉換爲實際的正則表達式,需要一些代碼。我有代碼。讓我們把它與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
來的文本價值?
是啊,這就是我所做的最後。如果我可以使用textarea直接設置正則表達式而不在模型中定義新變量,那將會很好。但無論如何,我猜這是有效的。 – AlexStack