Vue3 之 过滤器
时间:2024-04-04 19:10:29 来源:网络cs 作者:亙句 栏目:电商平台 阅读:
1、过滤器简介
1.1、全局过滤器与局部过滤器
过滤器本质上是一个函数,与自定义指令类似。
全局过滤器
Vue.filter(id, [definition])
局部过滤器
new Vue({ el: '#app', filters: { definition(value): { ... } } })
案例:将字符串首字母转换为大写字母的全局过滤器
Vue.filter('capitalize', function (value) { if (!value) return ''; value = value.toString(); return value.charAt(0).toUpperCase() + value.slice(1); })
如果换成局部过滤器
let vm = new Vue({ el: '#app', data: { // 参数定义,字典形式 }, computed: { // 计算属性,多次调用,只计算一次 }, methods: { // 普通方法,多次调用,多次计算 }, filters: { // 过滤器 capitalize(value) { if (!value) return ''; value = value.toString(); return value.charAt(0).toUpperCase() + value.slice(1); } }})
注意:
当全局过滤器和局部过滤器重名,会采用局部过滤器与自定义命令一样,全局过滤器可以在任何 Vue 实例的模板中使用,而局部过滤器只能在该实例绑定的视图中使用
过滤器可以使用在两个地方:
双花括号:{{ 变量 | 过滤器 }}
v-bind 表达式:v-bind:href=“变量 | 过滤器”
2、过滤器的参数
过滤器函数总是接收表达式的值作为第一个参数,过滤器本质上是一个 JS 函数,自然可以接收多个参数。
不建议把过滤器功能做的很复杂,这违背了过滤器的设计初衷,比如:Vue.filter(‘format’, function (value, …params) {…})
实例:为表达式的值添加前后缀的过滤器
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head> <body><div id="app"> <h2>过滤器</h2> <!-- 输出:vue-filters.js --> <p>{{ filename | format('vue', suffix) }}</p></div> <script src="VueJs/vue.js"></script><script> Vue.filter('format', function (value, prefix, suffix) { if (!value) return ''; value = value.toString(); return prefix + "-" + value + "." + suffix; }) let vm = new Vue({ el: '#app', data: { filename: 'filters', suffix: 'js' }, computed: { // 计算属性,多次调用,只计算一次 }, methods: { // 普通方法,多次调用,多次计算 }, filters: { // 过滤器 } })</script></body></html>
3、过滤器的串联
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> .profile {} </style></head> <body><div id="app"> <h2>过滤器</h2> <!-- 输出结果:DLROW OLLEH --> <p>{{ message | uppercase | reverse }}</p></div> <script src="VueJs/vue.js"></script><script> Vue.filter('uppercase', function (value) { if (!value) return ''; value = value.toString(); return value.toUpperCase(); }) Vue.filter('reverse', function (value) { if (!value) return ''; value = value.toString(); return value.split('').reverse().join(''); }) let vm = new Vue({ el: '#app', data: { message: 'hello world' }, computed: { // 计算属性,多次调用,只计算一次 }, methods: { // 普通方法,多次调用,多次计算 }, filters: { // 局部过滤器 } })</script></body></html>
本文链接:https://www.kjpai.cn/news/2024-04-04/154144.html,文章来源:网络cs,作者:亙句,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。