5. 过滤器-ref-自定义指令-计算属性
作者:互联网
目录
1. 过滤器的文档分析
- 作用: 处理数据格式,常用于文本格式化
- 使用位置: 双花括号插值
{{msg | 过滤器}}
和 v-bind 表达式 - 分类: 局部注册(本地)和全局注册
过滤器文档分析
// 在双花括号中
{{message | capitalize}}
// 在 v-bind 中
<div v-bind:id="rawId | formatId"></div>
(1) 全局定义过滤器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>过滤器</title>
</head>
<body>
<div id="app">
<p>处理前: {{msg}}</p>
<!-- 这里写过滤器名字 -->
<p>处理后: {{msg | toUpper}}</p>
</div>
<script src="./vue.js"></script>
<script>
// 全局过滤器, 需求: "abc" -> "Abc"; "toUpper" 是我给过滤器取的名
Vue.filter("toUpper", (v) => {
return v.charAt(0).toUpperCase() + v.substr(1);
});
let vm = new Vue({
el: "#app",
data: {
msg: "hello",
},
});
</script>
</body>
</html>
(2) 局部过滤器
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='UTF-8'>
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
<title>局部过滤器</title>
</head>
<body>
<div id='app'>
{{msg | toUpper}}
</div>
<script src='./node_modules/vue/dist/vue.js'></script>
<script>
const app = new Vue({
el: '#app',
data: {
msg: 'abc'
},
// 局部过滤器, 相比于 全局 filter, 它多了 s
filters: {
toUpper(v) {
return v.charAt(0).toUpperCase() + v.substr(1)
}
},
})
</script>
</body>
</html>
(3) 过滤器的串联与传参
// 过滤器串联
{{被处理的数据 | 过滤器A | 过滤器B}}
下方结果是 $100元,演示了过滤器串联和传参
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='UTF-8'>
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
<title>目的: 输出 $100元</title>
</head>
<body>
<div id='app'>
<!-- 给 B 过滤器传递了一个参数 -->
{{msg | A | B('元')}}
</div>
<script src='./node_modules/vue/dist/vue.js'></script>
<script>
// A 过滤器
Vue.filter('A', (v) => {
return '$' + v;
})
// B 过滤器, 其中 v 是 '$100'
Vue.filter('B', (v, k) => {
return v + k
})
const app = new Vue({
el: '#app',
data: {
msg: '100'
},
})
</script>
</body>
</html>
(4) 全局过滤器 + moment 日期格式化插件
日期格式化有个插件叫 moment
,网址是:http://momentjs.cn/,下载是 npm install moment -S
在这里插入代码片
标签:Vue,自定义,app,msg,toUpper,过滤器,全局,ref 来源: https://blog.csdn.net/weixin_44092191/article/details/112134067