//Value轉(zhuǎn)換器
//有時(shí)候你可能需要顯示一些不同格式的數(shù)據(jù)会喝,從基礎(chǔ)的數(shù)據(jù)轉(zhuǎn)化成顯示格式玄坦。
//eg 你存儲(chǔ)價(jià)格為float類型浸赫,但是允許用戶編輯的字段需要支持貨幣單位和小數(shù)點(diǎn)夸政。你可以用可寫的自動(dòng)屬性來實(shí)現(xiàn)元旬,然后解析傳入的數(shù)據(jù)到基本
//float類型里:
<pre>
function MyViewModel()
{
this.price = ko.observable(25,99);
this.formattedPrice = ko.computed({
read:function(){
return '$'+this.price().toFixed(2);
},
write:function(value){
value = parseFloat(value,replace(/[^\.\d]/g,""));
this.price(isNaN(value)? 0:value);
},
owner: this
});
}
ko.applyBinding(new MyViewModel());
</pre>
<pre>
<code>
<p>Enter bid price: <input data-bind="value: formattedPrice"/></p>
<code>
</pre>
//所以,不管用戶什么時(shí)候輸入新價(jià)格守问,輸入什么格式匀归,text box里會(huì)自動(dòng)更新為帶有2位小數(shù)點(diǎn)和貨幣符號(hào)的數(shù)值。
//這樣用戶可以看到你的程序有多聰明耗帕,來告訴用戶只能輸入2位小數(shù)穆端,否則的話自動(dòng)刪除多余的位數(shù),當(dāng)然也不能輸入負(fù)數(shù)仿便,
//因?yàn)?write 的callback函數(shù)會(huì)自動(dòng)刪除負(fù)號(hào)体啰。