//Value轉換器
//有時候你可能需要顯示一些不同格式的數據,從基礎的數據轉化成顯示格式。
//eg 你存儲價格為float類型,但是允許用戶編輯的字段需要支持貨幣單位和小數點。你可以用可寫的自動屬性來實現,然后解析傳入的數據到基本
//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>
//所以,不管用戶什么時候輸入新價格,輸入什么格式,text box里會自動更新為帶有2位小數點和貨幣符號的數值。
//這樣用戶可以看到你的程序有多聰明,來告訴用戶只能輸入2位小數,否則的話自動刪除多余的位數,當然也不能輸入負數,
//因為 write 的callback函數會自動刪除負號。