双向过滤器
我们使用过滤器都是在把来自模型的值显视在视图之前转换它。不过也可以定义一个过滤器,在把来自视图(< input > 元素)的值写回模型之前转化它,如下代码:
Vue.filter('currencyDisplay', {
// model -> view
// 在更新 `<input>` 元素之前格式化值
read: function(val) {
return '¥'+val.toFixed(2)
},
// view -> model
// 在写回数据之前格式化值
write: function(val, oldVal) {
var number = +val.replace(/[^\d.]/g, '')
return isNaN(number) ? 0 : parseFloat(number.toFixed(2))
}
})
html代码如下:
<div id="example">
<input type="text" v-model="msg|currencyDisplay"><br>
<span>{{msg}}</span>
</div>