Vue基础语法(二)

一、条件判断

1、概念

vue条件指令可以根据表达式的结果来渲染页面

2、v-if、v-else-if、v-else

(1)其后面的表达式为true,就会显示对应元素或组件

(2)相同的东西,只需要出现一个,即只会渲染一个标签

<div id="app">
    <h1 v-if="score>=90">优秀</h1>
    <h1 v-else-if="score>=60">及格</h1>
    <h1 v-else="score<60">不及格</h1>
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            score:50,
        },
    })
</script>

 3、v-show

(1)实现元素隐藏,未出现的就是加上了display: none;属性

<div id="app">
    <h1 v-show="score>=90">优秀</h1>
    <h1 v-show="score>=60&&score<90">及格</h1>
    <h1 v-show="score<60">不及格</h1>
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            score:50,
        },
    })
</script>

(2)v-show也可以通过true,false控制标签的显示隐藏
<style>
    .box{
        width: 200px;
        height: 200px;
        background-color: aqua;
    }
</style>
<div id="app">
    <div class="box" v-show="isShow"></div>
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            isShow:false,
        },
    })
</script>

 4、v-show与v-if的异同

(1)v-show:隐藏用display

(2)v-if:直接销毁标签,只有一次切换显示

二、v-for

1、遍历数组

(1)格式:<标签 v-for='(item,index) in 数组名'>{{item}}</标签>

①item:值

②index:下标

(2)代码例子

<div id="app">
    <ul>
        <li v-for="(item,index) in list">{{item}}</li>
    </ul>
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            list:['新闻','hao123','地图','贴吧'],
        },
    })
</script>

2、遍历对象(比较少用)

(1)格式:<标签 v-for='(value,item) in 对象名'>{{value}}:{{item}}</标签>

①value:属性值

②item:属性名

(2)代码例子

<div id="app">
    <div v-for="(item,value) in user">{{value}}:{{item}}</div>
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            user:{
                name:'申小兮',
                age:18,
            },
        },
    })
</script>

3、key属性

(1)官方推荐使用v-for时,给元素加上key属性,每一次循环都要有

(2)原则上key不能重复,并且不建议使使用index作为key

(3)后台数据返回,每一条数据都有自己的key

<div id="app">
    <div v-for="item in userData" :key="item.id">{{item.name}}</div>
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            userData:[
                {
                    id:1,
                    name:'申小兮',
                },
                {
                    id:2,
                    name:'林小兮',
                },
            ],
        },
    })
</script>

三、数据更新检测

数组的更新需要用vue提供的方法才可以自动更新页面,以往的方法无效

1、末尾的添加、删除

(1)push():末尾的添加

<div id="app">
    <li v-for="item in list">{{item}}</li>
    <button @click="change">修改</button>
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            list:['新闻','hao123','地图','贴吧','视频'],
        },
        methods:{
            change(){
                this.list.push('图片')
            }
        },
    })
</script>

(2)pop():末尾的删除
this.list.pop()

2、前面的插入、删除

(1)unshift():前面插入

this.list.unshift('图片')
(2)shift():前面删除
this.list.shift()

3、splice(index,length,替换内容):删除选中内容

this.list.splice(1)//从1位置开始删除(即仅剩第0个元素)
this.list.splice(0,2)//从0开始,删除长度为2以内的所有元素
this.list.splice(0,3,'a','b')//从0开始,删除长度为3以内的所有元素,并用a,b两值替换(替换值可以任意数量)

4、sort()排序

(1)升序

<div id="app">
    <li v-for="item in numArr">{{item}}</li>
    <button @click="change">修改</button>
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            numArr:[23,7890,1,456]
        },
        methods:{
            change(){
                this.numArr.sort(function(a,b){
                    return a - b
                })
            }
        },
    })
</script>
(2)降序
return b - a

5、反转:reverse()

<div id="app">
    <li v-for="item in list">{{item}}</li>
    <button @click="change">修改</button>
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            list:['新闻','hao123','地图','贴吧','视频'],
        },
        methods:{
            change(){
                this.list.reverse()
            }
        },
    })
</script>

6、this.$set(要修改的对象,索引值,修改后)

<div id="app">
    <li v-for="item in list">{{item}}</li>
    <button @click="change">修改</button>
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            list:['新闻','hao123','地图','贴吧','视频'],
        },
        methods:{
            change(){
                this.list[2]='222'//普通修改无效
                this.$set(this.list,2,4787)
            }
        },
    })
</script>

四、表单绑定

1、v-model的双向绑定

<div id="app">
    <input type="text" v-model="username">
    <h1>{{username}}</h1>
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            username:'默认数据'
        },
    })
</script>


 2、v-model原理

(1)输入框的input事件

(2)代码例子

<div id="app">
    <input type="text" :value="username" @input="getValue($event)">
    <h1>{{username}}</h1>
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            username:'默认数据'
        },
        methods:{
            getValue(e){
                console.log(e.target.value);
                this.username = e.target.value
            }
        }
    })
</script>


 3、单选、多选

参考文档网址:表单输入绑定 — Vue.js (vuejs.org)

(1)单选:input绑定的value值不会影响v-model绑定的属性值

<div id="app">
    男<input type="radio" v-model="sex" value="man">
    女<input type="radio" v-model="sex" value="woman">
    <p>{{sex}}</p>
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            sex:'',
        },
    })
</script>

(2)多选

①仅一个选择时:v-model绑定值是一个布尔值

<div id="app">
    是否购买<input type="checkbox" v-model="isBuy">
    <p>{{isBuy}}</p>
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            isBuy:false
        },
    })
</script>

多个选择时:选中的元素会添加在数组中
<div id="app">
    运动<input type="checkbox" v-model="hobby" value="1">
    学习<input type="checkbox" v-model="hobby" value="2">
    <p>{{hobby}}</p>
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            hobby:[],
        },
    })
</script>

 4、v-model的下拉框

<div id="app">
    <select name="" id="" v-model="city">
        <option value="1">北京</option>
        <option value="2">上海</option>
        <option value="3">天津</option>
        <option value="4">重庆</option>
    </select>
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            city:'3',//默认值是天津,下标为3
        },
    })
</script>

5、v-model修饰符

(1)number:将用户输入值转换成数值类型,输入类型需要是数字

<div id="app">
    <input type="text" v-model.number="username">
    <p>{{typeof username}}</p>
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            username:'',
        },
    })
</script>

(2)lazy:光标离开输入框或按enter时,输入框数据才会更新
<div id="app">
    <input type="text" v-model.lazy="username">
    {{username}}
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            username:'',
        },
    })
</script>
(3)trim:去掉首位空白(输入字符串时)
<div id="app">
    <input type="text" v-model.trim="username">
    {{username.length}}
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            username:'',
        },
    })
</script>

#vue#
Vue的基础学习 文章被收录于专栏

Vue的基础语法,组件化开发,CLI,Vue-router,Vuex详解,网络封装,UI框架

全部评论
学习Vue基础语法
1 回复 分享
发布于 2022-10-16 16:17 河南

相关推荐

头像
01-12 14:44
已编辑
百度_高级研发工程师
今天看到了某平台攻击牛友的帖子,段段今天打算为牛友们说句话,我们的努力到底有没有意义。&nbsp;(原文复述:感觉牛客就是当年那群做题区毕业了开始找工作还收不住那股味,颇有一种从年级第一掉到年纪第二后抱怨考不上大学的区味)&nbsp;&nbsp;粗鄙,无礼,傲慢,攻击,在这里我没有看到任何有用的分析,我只看到了屁股决定脑袋的攻击,我只看到了嫉妒和眼红。一、去医院不看病你去逛街吗&nbsp;去医院你不去看病你去逛街吗?去加油站不加油你去抽烟吗?去部队你不训练战斗技能你去养老吗?来牛客你不努力求职你来干什么来了。&nbsp;牛客本身就是个求职平台,大家分享有用的知识,分享面经,分享offer,分享求职经验的,来牛客不就干这个来了吗?有什么问题吗?...
给个好点的工作吧啊啊...:不知道我看的是不是和博主同样的帖子,我记得原帖是表达的是有些匿名老是发几十万的offer侮辱价,然后就有牛友觉得凡尔赛了导致后面的评论有些偏激。我觉得这个最近闫学晶那个事情有点类似了,她说他儿子一年只能赚七八十万家庭生活都难以为继,不说普通家庭,多少大厂的程序员都赚不到这个数字,大部分家庭看到这种发言肯定会难受的一p,生活的担子又这么重,人都是需要发泄情绪的,互联网就是个极佳的载体,所以很多人直接就喷她了,人在情绪发泄的时候是不思考的,否则就不叫发泄了。然后还有一个点,段哥假定了这些喷的人全都是“躺平的”,这点可能有失偏颇,很多人一直在努力,但是始终缺乏天时地利人和的某一个条件,这点相信段哥找工作的过程中深有体会。绝大部分人都以结果的失败去否认了努力的全过程,可能只是别人努力的方向错了。就像一次面试,可能你准备了很久,结果面试官就是比较奇葩,一直问没有学习到的领域或知识点,然后有人凭一个挂掉的结果就直接给你扣了一个“躺平”的帽子,觉得挂掉是你不够努力,您心里滋味如何?再说点近点的,我也是od,多少同事深夜无偿加班,涨过一分工资吗?多少外包的技术大牛因为学历被困在外包,连od都进不去,这些人难道不努力吗?只是限制与生活、公司制度等等之类的无奈罢了。说到努力,又想到李家琦79元眉笔事件,这么多年有没有认真工作?有没有涨工资?他嘴里说出来是那么的理所当然,打工牛马都知道“任劳任怨”,“认真工作”真能涨工资?只干活不发声就等着被摘果子吧,企业里永远都是“汇报杰出者”升的最快(当然不是所有企业),这种事情相信段哥包括我甚至大部分od都经历过。最近辞职回老家,和老爸散步每次他都会感慨街上的蔬菜小贩多不容易,他们晚上就窝在那种三轮小货车的驾驶室里,腿都伸不直,我们这里晚上零下了,只盖一条薄毛毯,始终舍不得住我们镇上几十块的酒店,因为一车蔬菜就赚几百块顶多一千而且要卖好久,这样的例子还有太多了。这种芸芸众生可能辛苦了一天之后,打开手机看到网上的凡尔赛发言,跟风喷了几句发泄情绪,我觉得这种人不应该扣上“躺平”的帽子。我觉得大部分正常人都是努力的,或者曾经努力过,但世界上有太多努力解决不了的无奈了,甚至说你都没有那个努力的机会,不过正因如此,才显得坚持不懈的努力奋斗之人的难得可贵,认清生活的真相后仍然热爱生活,敢于直面现实的淋漓。
段段STEADY觉醒与突...
点赞 评论 收藏
分享
2025-12-20 13:19
已编辑
曲阜师范大学 Java
点赞 评论 收藏
分享
评论
2
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务