前端基础-vue(条件循环)

本文详细介绍了Vue.js中条件渲染和列表渲染的使用方法,包括v-if、v-else-if、v-else、v-show及v-for指令的运用。通过实例展示了如何根据条件展示或隐藏元素,以及如何遍历数组和对象来动态生成列表。

HTML部分

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>vue条件循环语句</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>

<body>
<div class="tiaojian"><!--声明3个p标签,通过计算不让他们3个同时显示-->
   <p v-if="shu>10">还有{{shu}}个资源</p><!--创建一个v-if,如果值为true,就显示,如果为flase就不显示此标签-->
   <p v-else-if="shu<=10&&shu>=1">快没资源了</p><!--v-if是把不需要的标签直接去掉,而不是隐藏起来-->
   <p v-else>已经没资源了</p>
   <template v-if="show"><!--这个标签既可以把多个标签包含在一起,又不会改变dom节点,审查元素看不到这个标签-->
     <p>我是第一个p</p>
     <p>我是第二个p</p>
   </template>
   <p v-show="true">我用的是v-show属性,v-show没有把dom节点去掉,而是隐藏起来,display="none"</p>
</div>

<div class="xunhuan">
  <!--遍历一个数组里面的数据-->
  <ul>
    <li v-for="xianshi in liebiao">{{xianshi.name}}|{{xianshi.age}}岁</li><!--类似于for in循环,把数据拿出来,xianshi是自定义的,被循环的数据可以是一个对象也可以是一个数,如10,它会打印1-10,也可以是一个字符串,它会挨个打印每一个字符-->
    <li v-for="(xianshi,i) in liebiao">{{i}}</li><!--显示列表索引的方法-->
  </ul>
  <!--遍历一个对象里面属性名和属性值和索引的数据,value是自定义的-->
  <p v-for="(value,prop,index) in duixiang">{{value}}|{{prop}}|{{index}} </p>
  <!--点击按钮就增加一个dom节点-->
  <button @click="add">增加一个dom节点</button>
  
</div>
<script src="../js/vue-5.js"></script>
</body>
</html>

js部分

new Vue({
    el:".tiaojian",
    data:{
        shu:20,
        show:true,
    }    
})

new Vue({
    el:".xunhuan",
    data:{
        liebiao:[
            {
            name:"小红1号",
            age:22,
            },
            {
            name:"小红2号",
            age:23,
            },
            {
            name:"小红3号",
            age:24,
            },
        ],
        duixiang:{
            name:"zhb",
            age:22,
            sex:"男",
        }
    },
    methods:{
        add:function(){
            this.liebiao.push({//vue重写了push方法,可以直接push数组元素
                name:"小红x号",
                age:100,
            })
                
        },    
    }
})

小测试:

html部分

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
    <input @input="changetype"/>
        <p v-if="password.length>8">你的密码大于8位啦</p>
        <p v-else-if="password.length <= 8 && password.length > 0">请输入一个更长的密码</p>
        <p v-else>请输入你的密码</p>
        <ol>
            <li v-for="item in cate" :key="item.name">
                {{ item.name }}
                <ul>
                    <li v-for="sub in item.sub" :key="sub">{{ sub }}</li>
                </ul>
            </li>
        </ol>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                password: '',
                cate: [{
                    name: 'js', sub: ['vue','jq','react']
                },{
                    name: 'Databases', sub: ['Mysql','Oracle','MongoDB']
                },{
                    name: 'os', sub: ['macOS','Windows','Linux']
                }]
            },
            methods:{
                changetype:function(e){
                    this.password=e.target.value;
                    }
            }
        })
    </script>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值