12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>过滤器</title>
- <!-- 引入vue -->
- <script type="text/javascript" src="../js/vue.js"></script>
- <script type="text/javascript" src="../js/dayjs.min.js"></script>
- </head>
- <body>
- <!--
- 过滤器:
- 定义:对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理)
- 语法:
- 1、注册过滤器:Vue.filter(name,callback)或new Vue{filters:{}}
- 2、使用过滤器:{{xxx | 过滤器名}} 或 v-bind:属性 ="xxx | 过滤器名"
- 备注:
- 1、过滤器也可以接收额外参数、多个过滤器也可以串联(前一个过滤器返回的值作为
- 后一个过滤器的参数传入)
- 2、并没有改变原本的数据,是产生新的对应的数据
- -->
- <!-- 准备一个容器 -->
- <div id="root">
- <h2>显示格式化后的时间</h2>
- <!-- 计算属性实现 -->
- <h3>现在是:{{fmtTime}}</h3>
- <!-- methods实现 -->
- <h3>现在是:{{getFmtTime()}}</h3>
- <!-- 过滤器实现 -->
- <h3>现在是:{{time | timeFormater}}</h3>
- <!-- 过滤器实现(传参) -->
- <h3>现在是:{{time | timeFormater('YYYY_MM_DD') | mySlice}}</h3>
- <!-- 以下情况使用不多 -->
- <h3 :x="msg | mySlice">尚硅谷</h3>
- </div>
- </body>
- <script>
- Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示
- // 全局过滤器,必须在new Vue()之前
- Vue.filter('mySlice',function(value){
- return value.slice(0,4)
- })
- new Vue({
- el: '#root',
- data: {
- time: 1685590631262, //时间戳
- msg:'你好,尚硅谷'
- },
- computed: {
- fmtTime(){
- return dayjs(this.time).format('YYYY-MM-DD HH:mm:ss')
- }
- },
- methods: {
- getFmtTime(){
- return dayjs(this.time).format('YYYY年MM月DD日 HH:mm:ss')
- }
- },
- //局部过滤器
- filters:{
- timeFormater(value,str='YYYY年MM月DD日 HH:mm:ss'){
- console.log('@',value)
- return dayjs(value).format(str)
- },
- // mySlice(value){
- // return value.slice(0,4)
- // }
- }
- })
- </script>
- </html>
|