Vue过滤器使用方法详解

更新时间:2022-12-16 10:43:13

本篇来学习vue(仅适用vue2)中过滤器的基本用法

过滤器

过滤器(Filters)是vue为开发者提供的功能,常用于文本的格式化。可以用在两个地方:插值表达式和v-bind属性绑定。

私有过滤器

插值表达式中使用

<p>{<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->{message | capital }}</p>

使用示例

<!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>{{message | capital }}</p>
</div>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
message: 'hello 小白!'
},
// 定义过滤器一定要在filters中
filters: {
// 过滤器形参中的val 是管道符前面的值
capital(val) {
// 字符串 charAt(0)方法,取对应索引值
console.log(val.charAt(0))
// toUpperCase 转大写
const first = val.charAt(0).toUpperCase()
// slice 指定索引往回截取
const other = val.slice(1)
// 过滤器一定要有返回值
return first + other
}
}
})
</script>
</body>
</html>

v-bind属性绑定

<input type="text" v-bind:placeholder="message|capital">

使用示例

<!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">
<input type="text" v-bind:placeholder="message|capital">
</div>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
message: 'hello 小白!'
},
// 定义过滤器一定要在filters中
filters: {
// 过滤器形参中的val 是管道符前面的值
capital(val) {
// 字符串 charAt(0)方法,取对应索引值
console.log(val.charAt(0))
// toUpperCase 转大写
const first = val.charAt(0).toUpperCase()
// slice 指定索引往回截取
const other = val.slice(1)
// 过滤器一定要有返回值
return first + other
}
}
})
</script>
</body>
</html>

全局过滤器

使用Vue.filter()定义全局过滤器;接收两个参数 第一个全局过滤名称,第二个 全局过滤器的处理函数

使用示例

<!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>{{message | capital }}</p>
</div>
<div id="app2">
<input type="text" v-bind:placeholder="message|capital">
</div>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
// 使用Vue.filter()定义全局过滤器;接收两个参数 第一个全局过滤名称,第二个 全局过滤器的处理函数
Vue.filter('capital', function (val) {
// 字符串 charAt(0)方法,取对应索引值
console.log(val.charAt(0))
// toUpperCase 转大写
const first = val.charAt(0).toUpperCase()
// slice 指定索引往回截取
const other = val.slice(1)
// 过滤器一定要有返回值
return first + other
})
const app = new Vue({
el: '#app',
data: {
message: 'hello 小白!'
}
})
const app2 = new Vue({
el: '#app2',
data: {
message: 'hello 大海!'
}
})
</script>
</body>
</html>