Vue2.0学习— 列表过滤(四十)

Posted 王同学要努力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue2.0学习— 列表过滤(四十)相关的知识,希望对你有一定的参考价值。

【Vue2.0学习】— 列表过滤(四十)

数据监视实现:

 <div id="root">
        <h2>人员列表</h2>
        <input type="text" placeholder="请输入名字" v-model="keyWord">
        <ul>
            <li v-for="(p,index) of filPersons" :key="index">
                p.name-p.age-p.sex</li>

        </ul>
    </div>
    <script>
        const vm = new Vue(
            el: '#root',
            data: 
                keyWord: '',
                persons: [
                    id: '001',
                    name: '马冬梅',
                    age: 20,
                    sex: '女'
                , 
                    id: '002',
                    name: '周冬雨',
                    age: 22,
                    sex: '女'
                , 
                    id: '003',
                    name: '周杰伦',
                    age: 18,
                    sex: '男'
                , 
                    id: '004',
                    name: ' 任嘉伦',
                    age: 29,
                    sex: '男'
                ],
                filPersons: []
            ,
            watch: 
                //简写形式
                //     keyWord(val) 
                //         //filter不更改原数组,它是返回一个新的数组
                //         this.persons = this.persons.filter((p) => 
                //             return p.name.indexOf(val) !== -1
                //         )

                //     

                //
                keyWord: 
                    immediate: true,
                    deep: true,
                    handler(val) 
                        this.filPersons = this.persons.filter((p) => 
                            return p.name.indexOf(val) !== -1
                        )
                    
                

            
        )
    </script>

计算属性实现:

 <div id="root">
        <h2>人员列表</h2>
        <input type="text" placeholder="请输入名字" v-model="keyWord">
        <ul>
            <li v-for="(p,index) of filPersons" :key="index">
                p.name-p.age-p.sex</li>
        </ul>
    </div>
    <script>
        const vm = new Vue(
            el: '#root',
            data: 
                keyWord: '',
                persons: [
                    id: '001',
                    name: '马冬梅',
                    age: 20,
                    sex: '女'
                , 
                    id: '002',
                    name: '周冬雨',
                    age: 22,
                    sex: '女'
                , 
                    id: '003',
                    name: '周杰伦',
                    age: 18,
                    sex: '男'
                , 
                    id: '004',
                    name: ' 任嘉伦',
                    age: 29,
                    sex: '男'
                ]
            ,
            // 使用 computed实现
            computed: 
                filPersons() 
                    return this.persons.filter((p) => 
                        return p.name.indexOf(this.keyWord) !== -1
                    )
                
            
        )
    </script>




以上是关于Vue2.0学习— 列表过滤(四十)的主要内容,如果未能解决你的问题,请参考以下文章

Vue2.0学习— 列表排序(四十一)

Vue2.0学习— 收集表单数据(四十三)

Vue2.0学习— Vue监视数据的原理(四十二)

Vue2.0学习—自定义指令(四十九)

Vue2.0学习—v-pre指令(四十八)

Vue2.0学习— v-text指令(四十五)