案例-参考效果(过滤器,自动获取焦点,时间格式化)

Posted divtab

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了案例-参考效果(过滤器,自动获取焦点,时间格式化)相关的知识,希望对你有一定的参考价值。


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

<head>
    <title></title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <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">
        <!-- 添加商品
        1. 给button绑定click事件
        2. 用v-model给input绑定data中数据name 
        3. 调用methods中的addItem方法
        4. 把数据传递给方法
        5. 向items数组中添加数据-->
        <div class="add">
            品牌名称:
            <input v-focus type="text" v-model="name">
            <input :disabled="name.length===0" @click="addItem(name)" type="button" value="添加">
        </div>
        <div class="add">
            品牌名称:
            <input type="text" v-model="searchValue" placeholder="请输入搜索条件">
        </div>
        <div>
            <table class="tb">
                <tr>
                    <th>编号</th>
                    <th>品牌名称</th>
                    <th>创立时间</th>
                    <th>操作</th>
                </tr>
                <!-- 一 渲染表格
            1. 在data中准备数据items:[]
            2. v-for渲染列表 tr
            3. 插值表达式 渲染items中的数据  -->
                <tr v-for="(item,index) in newItems">
                    <td>{{index+1}}</td>
                    <td>{{item.name}}</td>
                    <!-- <td>{{item.date}}</td> -->
                    <!--在视图中渲染日期的位置使用过滤器-->
                    <td>{{ item.date | fmtDate('YYYY-MM-DD HH:mm:ss') }}</td>
                    <!-- 二 删除数据
                      1. 绑定click事件
                      2. 取消默认的点击事件
                      3. 调用methods中的deleItem方法
                      4. 调用方法时,把当前点击的a所在的tr对应的下标index传进去
                      5. 从items数组中删除当前这条数据
                    -->
                    <td>
                        <a href="#" @click.prevent="deleItem(index)">删除</a>
                    </td>
                </tr>
                <!-- 条件渲染v-if -->
                <tr v-if="newItems.length===0">
                    <td colspan="4">没有品牌数据</td>
                </tr>
            </table>
        </div>
    </div>
    <!-- 1 导入vue.js
        2 实例化Vue对象
        3 设置Vue实例对象的选项, 如el data等 -->
    <script src="./vue.js"></script>

    <script src="./moment.js"></script>
    <script>
        // 2 定义全局过滤器
        Vue.filter('fmtDate', (v, fmtString) => {
            // 3 在过滤器的方法中,使用moment包对data中的日期进行处理
            return moment(v).subtract(4, "days").format(fmtString);
        });

        // 定义全局自定义指令-自动聚焦
        Vue.directive('focus', {
            // 当被绑定的元素插入到 DOM 中时,inserted会被调用
            inserted: (el) => {
                // el 就是指令所在的DOM对象
                el.focus();
            }
        });
        new Vue({
            el: '#app',
            data: {
                items: [
                    { name: 'LV', date: new Date() },
                    { name: 'TCL', date: new Date() },
                    { name: 'MI', date: new Date() }],
                name: '',
                searchValue: ''
            },
            // 2. 计算属性
            computed: {
                newItems() {
                    // 3. 根据搜索的内容 返回搜索的结果数组
                    // filter返回满足条件的数组
                    return this.items.filter((item) => {
                        // item表是数组中的每个元素
                        // 筛选item (判断item中的name的值是否以searchValue开头)
                        return item.name.startsWith(this.searchValue);
                    });
                }
            },
            methods: {
                deleItem: function (index) {
                    console.log(index);
                    if (confirm('是否删除')) {
                        this.items.splice(index, 1);
                    }
                },
                addItem: function (name) {
                    console.log(name);
                    this.items.unshift({
                        name: name,
                        date: new Date()
                    });
                    this.name = "";
                }
            }
        });
    </script>

</body>

</html>

添加
搜索
删除

技术图片

技术图片

以上是关于案例-参考效果(过滤器,自动获取焦点,时间格式化)的主要内容,如果未能解决你的问题,请参考以下文章

Vue中输入框自动获取焦点-移动端ios不能唤起键盘解决办法

Vue中输入框自动获取焦点-移动端ios不能唤起键盘解决办法

计算机视觉案例:应用opencv+keras完成视频物体检测

案例HTML5-立体式动画图片切换banner效果

如何让输入框默认获得焦点

一行代码快速实现今日头条 网易新闻焦点图自动循环轮播效果