24.VUE学习之-变异方法filter与regexp实现评论搜索功能

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <!--<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>-->
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<div id="hdcms">
    <li v-for="(v,k) in comments">
        {{v.id}} - {{v.content}}
        <button v-on:click="remove(k)">删除</button>
    </li>
    <textarea v-model="current_content" cols="30" rows="10"></textarea><br>
    <button v-on:click="push('end')">发表到后面</button>
    <button v-on:click="push('pre')">发表到前面</button>
    <br>
    <button v-on:click="del('last')">删除最后一条评论</button>
    <button v-on:click="del('first')">删除第一条评论</button>
    <br>
    <button v-on:click="sort()">按照编号排序</button>
    <button v-on:click="reverse()">反转顺序</button>
    <br>
    <!--按输入的内容筛选出需要的内容-->
    <input type="text" v-on:keyup.enter="search" v-model="search_content">
    <li v-for="(v,k) in comments">
        {{v.id}} - {{v.content}}
        <button v-on:click="remove(k)">删除</button>
    </li>
</div>
<script>
    var app = new Vue({
        el: '#hdcms',
        data: {
            //搜索内容
            search_content:'',
            //当前用户输入内容
            current_content: '',
            comments: [
                {id: 2, content: 'HDPHP'},
                {id: 4, content: 'HDCMS'},
                {id: 1, content: '后盾人'},
                {id: 3, content: '向军老师'},
            ]
        },
        methods: {
            search(){

                //filter是循环comments里的内容,逐条按下面的规则匹配
                this.comments = this.comments.filter((item)=>{

                    <!--按输入的内容筛选出需要的内容-->
                    console.log(this.search_content);
                    var reg  = new RegExp(this.search_content,'i'); //i不区分大小写
                    return reg.test(item.content); //返回能匹配上的数据

                })


            },
            sort(){
                this.comments.sort(function (a, b) {
                    return a.id > b.id;
                })
            },
            reverse(){
                this.comments.reverse();
            },
            remove(k){
                this.comments.splice(k, 1);
            },
            push(type){
                var id = this.comments.length+1;
                var content = {id:id,content: this.current_content}
                switch (type) {
                    case 'end':
                        this.comments.push(content);
                        break;
                    case 'pre':
                        this.comments.unshift(content);
                        break;
                }
                this.current_content = '';
            },
            del(type){
                switch (type) {
                    case 'last':
                        this.comments.pop();
                        break;
                    case 'first':
                        this.comments.shift();
                        break;
                }
            }
        }
    });
</script>
</body>
</html>

效果:

posted @ 2019-01-08 10:24  HaimaBlog  阅读(527)  评论(0编辑  收藏  举报