moment.js插件的简单上手使用

开发过程中看长篇幅的技术文档是件多么影响多发效率的事情丫,哼哼,人家明明只是想用个简单的功能而已丫,下面文档很好的解决了这个问题,yeah~~~

一.monent.js时间插件

1.Moment.js 文档:http://momentjs.cn/docs/

使用起来可以说是非常简单了

1. 安装插件:

npm install moment

2.main.js中引入插件

 import moment from 'moment'
 //全局过滤器
 Vue.filter('dateFmt',(input,formatString="YYYY-MM-DD")=>{
     //es5函数参数设置默认值
     //const lastFormatString = formatString || ''

     /**
      * moment(input) 把时间字符串转成时间对象
      * format(formatString) 把时间对象,按照指定格式,格式化成符合条件的字符串
      */
     return moment(input).format(formatString)
 })

3.在相应的goodslist文件中写入 | dateFmt即可

<span>{{item.add_time | dateFmt}}</span>

4.完工:展示效果

另一个:

<span>{{item.add_time | dateFmt('MMMM Do YYYY, h:mm:ss a') }}</span>

效果展示:

 另一种:

<span>{{item.add_time | dateFmt('YYYY-MM-DD HH:mm:ss') }}</span>

 

结果展示

 一个例子:用来辅助加深理解:可以不看

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="https://cdn.bootcss.com/vue/2.5.16/vue.js"></script>
    <style>
        #app {
            width: 600px;
            margin: 10px auto;
        }

        .tb {
            border-collapse: collapse;
            width: 100%;
        }

        .tb th {
            background-color: #0094ff;
            color: white;
        }

        .tb td,
        .tb th {
            padding: 5px;
            border: 1px solid black;
            text-align: center;
        }

        .add {
            padding: 5px;
            border: 1px solid black;
            margin-bottom: 10px;
        }
    </style>
</head>

<body>
    <div id="app">
        <brand-manager></brand-manager>
        <!-- <p>写一个组件,时间:<span style="background:yellowgreen;"v-model="time"></span></p> -->
    </div>

    <!-- 组件的template -->
    <template id="templateId">
        <div>

            <div class="add">
                编号:
                <input v-model="id" type="text"> 品牌名称:
                <input v-model="name" @keyup.enter="add" type="text">
                <input type="button" @click="add" value="添加">
            </div>

            <div class="add">
                品牌名称:
                <input type="text" v-model="keyword" @keyup.13="search" placeholder="请输入搜索条件">
            </div>
            <table class="tb">
                <tr>
                    <th>编号</th>
                    <th>品牌名称</th>
                    <th>创立时间</th>
                    <th>操作</th>
                </tr>
                <!-- 动态生成内容tr -->
                <tr v-if="list.length==0">
                    <td colspan="4">没有数据了哦</td>
                </tr>
                <tr v-for="item in list" :key="item.id">
                    <td>{{item.id}}</td>
                    <td>{{item.name}}</td>
                    <td>{{item.ctime | dateFmt('-')}}</td>
                    <td>
                        <a href="javascript:void(0)" @click="deleteBrand(item.id)">删除</a>
                    </td>
                </tr>
            </table>
            
        </div>
    </template>
  
</body>
<script>
    //定义和注册组件
    //关于命名约定 https://cn.vuejs.org/v2/guide/components.html#%E7%BB%84%E4%BB%B6%E5%91%BD%E5%90%8D%E7%BA%A6%E5%AE%9A
    Vue.filter('dateFmt', function (input, operator) {
        const year = input.getFullYear()
        const month = input.getMonth() + 1
        const day = input.getDate()
        return year + operator + month + operator + day
    })
    Vue.component('brandManager', {
        template: "#templateId",
        data() {
            return {
                id: '',
                name: '',
                keyword: '',
                list: [{
                        id: 1,
                        name: '宝马',
                        ctime: new Date()
                    },
                    {
                        id: 2,
                        name: '奥迪',
                        ctime: new Date()
                    }
                ],
                oldList: []
            }
        },
        // filters: {
        //     dateFmt(input, operator) {
        //         const year = input.getFullYear()
        //         const month = input.getMonth() + 1
        //         const day = input.getDate()
        //         return year + operator + month + operator + day
        //     }
        // },
        methods: {
            //增加
            add() {
                console.log(this);
                this.list.push({
                    id: this.id,
                    name: this.name,
                    ctime: new Date()
                })

                //清空
                this.id = ''
                this.name = ''

                this.oldList = this.list
            },
            //根据id删除
            deleteBrand(id) {
                //es6的新语法
                //http://es6.ruanyifeng.com/#docs/array#%E6%95%B0%E7%BB%84%E5%AE%9E%E4%BE%8B%E7%9A%84-find-%E5%92%8C-findIndex
                const index = this.list.findIndex(function (item, index, arr) {
                    return item.id === id;
                })

                //删除
                this.list.splice(index, 1)

                this.oldList = this.list
            },
            //根据关键字搜索
            search() {
                if (this.keyword.trim().length == 0) {
                    this.list = this.oldList

                    return
                }

                //利用数组的filter方法去过滤我们元素,过滤出来之后,会形成一个新的数组
                //参考:http://www.runoob.com/jsref/jsref-filter.html
                const newList = this.list.filter(function (item, index, arr) {
                    //es6中,判断我们字符串中,是否包含得有某个字符,使用includes
                    //参考:http://es6.ruanyifeng.com/#docs/string#includes-startsWith-endsWith
                    return item.name.includes(this.keyword)
                }, this)

                //把过滤出来的新数组,赋值给list
                this.list = newList
            }
        }
    })
    const vm = new Vue({
        el: "#app"
    })
</script>

</html>
View Code

 

 

 

 展示效果

 

 

 

 

 吃饭去吧

posted @ 2017-04-20 16:29  Fanyee  阅读(3666)  评论(0编辑  收藏  举报