过滤器.html 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>过滤器</title>
  8. <!-- 引入vue -->
  9. <script type="text/javascript" src="../js/vue.js"></script>
  10. <script type="text/javascript" src="../js/dayjs.min.js"></script>
  11. </head>
  12. <body>
  13. <!--
  14. 过滤器:
  15. 定义:对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理)
  16. 语法:
  17. 1、注册过滤器:Vue.filter(name,callback)或new Vue{filters:{}}
  18. 2、使用过滤器:{{xxx | 过滤器名}} 或 v-bind:属性 ="xxx | 过滤器名"
  19. 备注:
  20. 1、过滤器也可以接收额外参数、多个过滤器也可以串联(前一个过滤器返回的值作为
  21. 后一个过滤器的参数传入)
  22. 2、并没有改变原本的数据,是产生新的对应的数据
  23. -->
  24. <!-- 准备一个容器 -->
  25. <div id="root">
  26. <h2>显示格式化后的时间</h2>
  27. <!-- 计算属性实现 -->
  28. <h3>现在是:{{fmtTime}}</h3>
  29. <!-- methods实现 -->
  30. <h3>现在是:{{getFmtTime()}}</h3>
  31. <!-- 过滤器实现 -->
  32. <h3>现在是:{{time | timeFormater}}</h3>
  33. <!-- 过滤器实现(传参) -->
  34. <h3>现在是:{{time | timeFormater('YYYY_MM_DD') | mySlice}}</h3>
  35. <!-- 以下情况使用不多 -->
  36. <h3 :x="msg | mySlice">尚硅谷</h3>
  37. </div>
  38. </body>
  39. <script>
  40. Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示
  41. // 全局过滤器,必须在new Vue()之前
  42. Vue.filter('mySlice',function(value){
  43. return value.slice(0,4)
  44. })
  45. new Vue({
  46. el: '#root',
  47. data: {
  48. time: 1685590631262, //时间戳
  49. msg:'你好,尚硅谷'
  50. },
  51. computed: {
  52. fmtTime(){
  53. return dayjs(this.time).format('YYYY-MM-DD HH:mm:ss')
  54. }
  55. },
  56. methods: {
  57. getFmtTime(){
  58. return dayjs(this.time).format('YYYY年MM月DD日 HH:mm:ss')
  59. }
  60. },
  61. //局部过滤器
  62. filters:{
  63. timeFormater(value,str='YYYY年MM月DD日 HH:mm:ss'){
  64. console.log('@',value)
  65. return dayjs(value).format(str)
  66. },
  67. // mySlice(value){
  68. // return value.slice(0,4)
  69. // }
  70. }
  71. })
  72. </script>
  73. </html>