11-04 Vue.js 知识梳理

1.MVVM

model:模型,数据对象 ===>(data)

view:视图,模板页面 ===> Dom

viewModel:视图模型(vue)===> 视图的监听和数据绑定

2.基础语法

  • 双大括号表达式
    <p> {{ msg }} <p>
    
    <p v-text="msg"><p>
    
    <p v-html="msg"><p>

  • 指令一:强制数据绑定
    <img v-bind:src="imgUrl" />
    <img :src="imgUrl" />

  • 指令二:绑定事件监听
    <button @click="test">测试</button>
    
    // 带传参
    <button @click="test(key)">测试</button>

    3.数据监听与计算

  • computed
    data(){
        return {
            
        fristName:"",
        lastName:"",
        fullName:"",
    
        }
    }
    
    
    
    // 计算属性-是回调函数(你定义的,你没有调用,但是最终执行了)
    // 计算函数 -读取改属性值和相关数据发生变化的时候调用
    computed:{
        fullNameComputed(){
            return this.fristName +  ' ' +  this.lastName
        },
    
        // 双向数据绑定监听
        fullName3:{
            // 回调函数 当需要读取当前属性值时回调,根据相关的数据计算并返回当前属性的值
            get(){
                 return this.fristName +  ' ' +  this.lastName
            },
            
            // 回调函数,监视当前属性值的变化,当属性值发生改变时回调,更新相关的属性数据
            set(val) {
                const name = val.split('')
                this.fristName  = name[0]
                this.lastName = name[1]
            }       
    
         }
    
    }
    
    // 监听数据
    watch: {
    
        fristName: function(val) {
            this.fullName = val  +  '' +  this.lastName
        }
    
        lastName: function(val) {
            this.fullName =  this.fristName  +  '' +  val 
        }
    
    }
    
    
    
    
    
    
    

    3.样式的动态绑定

  • data(){
        return {
            a:"aClass",
            isA: false,
            isB: true,
            ativeColor:"red",
            size:20
        }
    }
    
    
    
    // class绑定 :class='xxx'
    
    <p :class="a"></p>
    <p :class="{aClass: isA, bClass : isB}"> xxx 是对象</p>
    
    <p :class="['aClass','bClass']"> xxx 是数组</p>
    
    // style绑定
    
    <p :style="{color:ativeColor,fontSize:size}"></p>
    
    
    //样式表
    
    <style>
    
    .aClass {
        color : "#333"
    }
    
    .bClass {
        color : "#f00"
    }
    
    .cClass {
        color : "#336699"
    }
    </style>
    

    4.条件渲染

5.条件渲染




// 遍历数组
<ul>
    <li v-for="(p,index) in list" :key="index">
    {{p.name}}-------{{p.age}}
    </li>
</ul>


// 遍历对象


<ul>
    <li v-for="(p,key) in list[0]" :key="key">
    {{p}}-------{{key}}
    </li>
</ul>



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

// 修改
list.splice(index,1 , obj) 

// 新增
list.splice(index,0 , obj)
data(){
    return {
        searchName:"",
        orderType:0, // 0 -原本 1-升序  2-降序
        person:[{name:"Tom1",age:18},
                {name:"Tom2",age:23},
                {name:"Tom3",age:6},
                {name:"Tom4",age:81},
                {name:"Tom5",age:65},]
    }
}


computed:{
    filterPersons(){
        const {searchName,  person,  orderType} = this
        let fPerson ;
        fPerson  = person.filter(item => item.name.indexOf(searchName) >= 0 )
        if(orderType > 0) {

            if(orderType == 2){
                fPerson.sort((item1,item2) => item2.age - item1.age)
             } else {
                fPerson.sort((item1,item2) => item1.age - item2.age)
             }
-        }
        return fPerson 
    }

}


method:{

    orderHandle(order) {
        this.orderType = order
    }

}





// html
<input v-model="searchName"  />
<ul>
    <li v-for="(p,index) in filterPersons" :key="index">
        {{index}}------{{p.name}}-------{{p.age}}
    </li>
</ul>

<button @click="orderHandle(1)"> 年龄升序</button>
<button @click="orderHandle(2)"> 年龄降序</button>
<button @click="orderHandle(0)"> 原本顺序</button>








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值