其他vue相关文章可以在我个人分类中的vue.js部分查看
# 过滤器
Vue.js 允许自定义过滤器,用于文本的格式化。其特点是,渲染格式化后的文本却不改变其本身内容。例如:日期的格式化
过滤器可以用在两个地方:双花括号插值、 v-bind 表达式 (v2.1.0+)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示:
<!-- 在双花括号中 -->
{{ message | capitalize }}
<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | formatId"></div>
# 全局过滤器
顾名思义,定以后可以在每一个vue实例中使用,要注意的是,必须在vue实例声明前定义过滤器,否则会出现检测不到过滤器的情况。
下面是一个用例,定义的funfotmat过滤器将可以在app和app2中使用
<div id="app">
<p v-for="item in list">{{item.name | funfotmat}}</p>
</div>
<script>
Vue.filter('funfotmat',function(name){
return name.replace(/xiao/g,"da")
})
var vm = new Vue({
el: "#app",
data: {
list: [
{id:1,name:"xiaomingxiaomao"},
{id:2,name:"xiaohong"}
]
}
})
var vm2 = new Vue({
el: "#app2"
})
</script>
# 私有过滤器
一些过滤器可能只在一个组建中使用,这时声明为全局过滤器会造成不必要的js加载,用户在访问一些未使用该过滤器的页面时还需要加载这个过滤器的js代码,造成资源额外开销,所以可以申请为私有过滤器。
演示如下:
var vm = new Vue({
el: "#app",
data: {
},
methods: {
},
//过滤器
filters: {
timeFormat1: function (value) {
var dt = new Date(value);
var yyyy = dt.getFullYear();
var MM = dt.getMonth() + 1;
var dd = dt.getDate();
var hh = dt.getHours();
var mm = dt.getMinutes();
var ss = dt.getSeconds();
return `${yyyy}-${MM}-${dd} ${hh}:${mm}:${ss}`;
},
timeFormat2: function (value) {
var dt = new Date(value);
var yyyy = dt.getFullYear();
var MM = dt.getMonth() + 1;
var dd = dt.getDate();
var hh = dt.getHours();
var mm = dt.getMinutes();
var ss = dt.getSeconds();
return `${yyyy}年${MM}月${dd}日`;
}
}
})
此时的timeFormat和timeFormat2就只能在app中使用而无法在其他组件中使用。