当前位置:   article > 正文

Vue:filters过滤器_vue filters 过滤器

vue filters 过滤器

        日期、时间格式化是Vue前端项目中较为常遇到的一个需求点,此处,围绕Vue的过滤器来介绍如何更为优雅的解决此类需求。

过滤器filters使用注意点

        Vue允许开发者自定义过滤器,可以实现一些常见的文本格式化等需求。

        使用时要注意的点在于:过滤器可使用在两个地方——①双花括号插值表达式;②v-bind表达式。另一个是过滤器书写的位置:应在JavaScript表达式的尾部,并且使用管道符与表达式进行分割开来

        例如:假定我们已经定义了一个过滤器,名称为:dateTimeFormat,用于日期时间的格式化操作,那么在使用时的书写方式如下,

 

<div class="left">{{ JavaScript表达式 | dateTimeFormat  }}</div>

        显示的效果如下,

过滤器filters的两种定义方式

        接下里我们看一下过滤器的定义方式,Vue.js官网文档提供了两种方式,

方式1:局部定义

        局部定义类似于组件的局部注册操作,只能在当前组件内部使用。

        以下我们对上面提到的dateTimeFormat过滤器进行定义,这里要使用到一个第三方库moment.js,安装方式如下,

npm install moment -S

        安装之后直接在局部组件中引入即可。

import moment from 'moment'

        接着,我们开始定义过滤器dateTimeFormat,完整的示例代码如下,

  1. <template>
  2. <div class="left">{{ currentDate | dateTimeFormat }}</div>
  3. </template>
  4. <script>
  5. import moment from 'moment'
  6. export default {
  7. name: "Top",
  8. props: {},
  9. filters: {
  10. dateTimeFormat: function (value, pattern = 'YYYY-MM-DD HH:mm:ss') {
  11. return moment(value).format(pattern);
  12. }
  13. },
  14. data() {
  15. return {
  16. timerHandler: -1,
  17. currentDate: null,
  18. }
  19. },
  20. computed: {
  21. title() {
  22. return process.env.VUE_APP_TITLE;
  23. },
  24. moduleName() {
  25. return this.$store.state.module_name;
  26. },
  27. },
  28. mounted() {
  29. this.getCurrentDate();
  30. this.setTimter();
  31. },
  32. methods: {
  33. setTimter() {
  34. this.timerHandler = setInterval(() => {
  35. this.getCurrentDate();
  36. }, 1000);
  37. },
  38. getCurrentDate() {
  39. this.currentDate = Date.now();
  40. }
  41. },
  42. beforeUpdate() {
  43. },
  44. beforeDestroy() {
  45. clearInterval(this.timerHandler);
  46. }
  47. }
  48. </script>
  49. <style lang="less" scoped>
  50. </style>

方式2:全局定义

        接着,我们看一下如何进行全局的过滤器定义,

  1. /*
  2. * @Description:
  3. * @Author: Xwd
  4. * @Date: 2023-02-15 22:26:06
  5. * @LastEditors: Xwd
  6. * @LastEditTime: 2023-02-18 14:53:58
  7. */
  8. import Vue from 'vue'
  9. import App from './App.vue'
  10. import router from './router'
  11. import store from './store'
  12. import moment from 'moment'
  13. Vue.config.productionTip = false
  14. //定义全局过滤器
  15. Vue.filter("dateTimeFormat",(value,pattern='YYYY-MM-DD HH:mm:ss')=>{
  16. return moment(value).format(pattern);
  17. })
  18. new Vue({
  19. router,
  20. store,
  21. render: h => h(App)
  22. }).$mount('#app')

        最终效果是一致的,不同之处在于,全局定义的过滤器可以在项目中的任何组件中进行使用。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/96316
推荐阅读
相关标签
  

闽ICP备14008679号