步骤 2 : 多个过滤器 步骤 3 : 全局过滤器
定义一个 首字母大写 过滤器
filters:{ capitalize:function(value) { if (!value) return '' //如果为空,则返回空字符串 value = value.toString() return value.charAt(0).toUpperCase() + value.substring(1) } } 然后在视图里如下方式使用: {{ data|capitalize }} <script src="https://how2j.cn/study/vue.min.js"></script>
<style>
table tr td{
border:1px solid gray;
padding:10px;
}
table{
border-collapse:collapse;
width:800px;
table-layout:fixed;
}
tr.firstLine{
background-color: lightGray;
}
</style>
<div id="div1">
<table align="center" >
<tr class="firstLine">
<td>输入数据</td>
<td>过滤后的结果</td>
</tr>
<tr>
<td align="center">
<input v-model= "data" />
</td>
<td align="center">
{{ data|capitalize }}
</td>
</tr>
</table>
</div>
<script>
new Vue({
el: '#div1',
data: {
data:''
},
filters:{
capitalize:function(value) {
if (!value) return '' //如果为空,则返回空字符串
value = value.toString()
return value.charAt(0).toUpperCase() + value.substring(1)
}
}
})
</script>
定义两个过滤器,分别是首字母大写和尾字母大写
然后通过如下方式同时首字母大小写 {{ data|capitalize|capitalizeLastLetter }} <script src="https://how2j.cn/study/vue.min.js"></script>
<style>
table tr td{
border:1px solid gray;
padding:10px;
}
table{
border-collapse:collapse;
width:800px;
table-layout:fixed;
}
tr.firstLine{
background-color: lightGray;
}
</style>
<div id="div1">
<table align="center" >
<tr class="firstLine">
<td>输入数据</td>
<td>过滤后的结果</td>
</tr>
<tr>
<td align="center">
<input v-model= "data" />
</td>
<td align="center">
{{ data|capitalize|capitalizeLastLetter }}
</td>
</tr>
</table>
</div>
<script>
new Vue({
el: '#div1',
data: {
data:''
},
filters:{
capitalize:function(value) {
if (!value) return '' //如果为空,则返回空字符串
value = value.toString()
return value.charAt(0).toUpperCase() + value.substring(1)
},
capitalizeLastLetter:function(value) {
if (!value) return '' //如果为空,则返回空字符串
value = value.toString()
return value.substring(0,value.length-1)+ value.charAt(value.length-1).toUpperCase()
}
}
})
</script>
在上面的例子里可以看到,过滤器是定义在Vue对象里的。 但是有时候,很多不同的页面都会用到相同的过滤器,如果每个Vue对象里都重复开发相同的过滤器,不仅开发量增加,维护负担也增加了。
所以就可以通过全局过滤器的方式,只定义一次过滤器,然后就可以在不同的Vue对象里使用了。 注册全局过滤器: Vue.filter('capitalize', function (value) { if (!value) return '' value = value.toString() return value.charAt(0).toUpperCase() + value.slice(1) }) Vue.filter('capitalizeLastLetter', function (value) { if (!value) return '' //如果为空,则返回空字符串 value = value.toString() return value.substring(0,value.length-1)+ value.charAt(value.length-1).toUpperCase() }) 然后就可以像前面的例子那样使用了 <script src="https://how2j.cn/study/vue.min.js"></script>
<style>
table tr td{
border:1px solid gray;
padding:10px;
}
table{
border-collapse:collapse;
width:800px;
table-layout:fixed;
}
tr.firstLine{
background-color: lightGray;
}
</style>
<div id="div1">
<table align="center" >
<tr class="firstLine">
<td>输入数据</td>
<td>过滤后的结果</td>
</tr>
<tr>
<td align="center">
<input v-model= "data" />
</td>
<td align="center">
{{ data|capitalize|capitalizeLastLetter }}
</td>
</tr>
</table>
</div>
<script>
Vue.filter('capitalize', function (value) {
if (!value) return ''
value = value.toString()
return value.charAt(0).toUpperCase() + value.slice(1)
})
Vue.filter('capitalizeLastLetter', function (value) {
if (!value) return '' //如果为空,则返回空字符串
value = value.toString()
return value.substring(0,value.length-1)+ value.charAt(value.length-1).toUpperCase()
})
new Vue({
el: '#div1',
data: {
data:''
}
})
</script>
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2020-04-08
过滤器里的代码 不需要加分号吗
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2019-12-23
个人理解的过滤器的意义
3 个答案
hhhzt 跳转到问题位置 答案时间:2021-01-26 没毛病,你自己试试就知道了,
在第二个过滤器里面加多一行代码
document.getElementById("div2").innerHTML = value
加多一个id=div2的标签
ercilan 跳转到问题位置 答案时间:2020-10-30 如果知道shell/bat,就懂了
梦想黑客 跳转到问题位置 答案时间:2020-05-23 我觉得理解的正确,哈哈
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2019-11-11
站长网站的做的真好,由浅入深,良心,赞
2019-07-26
特别搞不懂为什么要这样{{ data|capitalize }}
2019-03-01
大哥们走过路过帮一下我谢谢嗷
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 2 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|