• vue基础part(4-6)


    条件渲染

    v-if 与 v-if

    	<div id="demo">
            <p v-if="ok">成功了</p>
            <p v-else>失败了</p>
            <button @click="ok=!ok">切换</button>
            <p v-show="ok">v-show显示成功</p>
            <p v-show="!ok">v-show显示失败</p>
        </div>
    

    开发者模式下element中显示内容

    v-if 为false的部分 不会被显示出来,而v-show的部分会display属性变为none

    列表渲染

    类似foreach的写法

     		<h2>v-for遍历数组</h2>
            <ul>
                <li v-for="(p,index) in persons" :key="index">
                    {{index+1}}----{{p.name}}--{{p.age}}
                    ---<button @click="deleteperson(index)">删除</button>
                    ---<button @click="updatePerson(index,{name:'Cat',age:20})">更新</button>
                </li>
            </ul>
    
    	new Vue({
                el:"#demo",
                data:{
                    persons:[
                        {name:'tom',age:18},
                        {name:'jack',age:19},
                        {name:'bob',age:17},
                        {name:'rose',age:16}
                    ]
                },
                methods:{
                    deleteperson(index){
                        this.persons.splice(index,1)
                    },
                    updatePerson(index,newP){
                        this.persons[index].name=newP.name
                        this.persons[index].age = newP.age
                        //this.persons[index] = newP
                        // Vue.set(this.persons,index,newP)
                        //this.persons.splice(index,1,newP)
                    }
                }
            })
    

    值得注意的是 vue绑定的是persons变量本身,而非其内部的数据结构。所以 //this.persons[index] = newP这种写法可以改变数据结构,但是却不能在页面上渲染成功。通过this.persons[index].name=newP.name的方式却可以(有疑惑)。通过vue的set方法可以解决这个问题,Vue改写的splice方法也可以解决该问题。

    splice函数

    splice(index,len,[item])

    • index:数组开始下标
    • len: 替换/删除的长度 添加时为0
    • item:替换的值,删除操作的话 item为空

    列表搜索与排序

    	<div id="demo">
            <input type="text" v-model="searchName">
            <h2>v-for遍历数组</h2>
            <ul>
                <li v-for="(p,index) in filterPersons" :key="index">
                    {{index+1}}----{{p.name}}--{{p.age}}
                </li>
            </ul>
           <button @click="setOrderType(1)">年龄升序</button>
           <button @click="setOrderType(2)">年龄降序</button>
           <button @click="setOrderType(0)">原本顺序</button>
        </div>
    
     new Vue({
                el:"#demo",
                data:{
                    searchName:'',
                    orderType:0,//0 原本 1 升序 2降序
                    persons:[
                        {name:'tom',age:18},
                        {name:'jack',age:19},
                        {name:'bob',age:17},
                        {name:'rose',age:16}
                    ]
                },
                computed:{
                    filterPersons (){
                        //变量作用域提升
                        const{ searchName , persons,orderType} = this
                        let fPersons;
                        fPersons = persons.filter( p => p.name.indexOf(searchName)!= -1)
                        if(orderType != 0){
                            fPersons.sort(function (p1,p2){
                                if(orderType === 2){
                                    return p2.age - p1.age
                                }else{
                                    return p1.age - p2.age
                                }
                               
                            })
                        }
                        return fPersons
                    }
                },
                methods:{
                    setOrderType(orderType){
                        this.orderType = orderType
                    }
                }
            })
    

    提升变量的作用域,不然每次访问这些变量的时候需要this

     const{ searchName , persons,orderType} = this
    

    js filter函数用法

    	Array.filter(function(currentValue, indedx, arr), thisValue)
    

    currentValue:为元素当前值 在上述代码中 p变量

    满足filter中回调函数的数据将会保留 达到筛选的目的

    sort 回调函数中定义排序规则

  • 相关阅读:
    pwnable.kr之input
    pwnable.kr之bof
    pwnable.kr之fd
    运维及服务器组成详解
    查看锁信息(开启InnoDB监控)
    【原创】记一次MySQL大表高并发写入引发CPU飙升的排障过程
    【原创】获取MySQL crash 时的core file
    【原创】MySQL Replay线上流量压测工具
    python面向对象
    TCP三次握手与四次挥手
  • 原文地址:https://www.cnblogs.com/wuloucha/p/13423483.html
Copyright © 2020-2023  润新知