【Vue常用指令之流程控制】

Vue常用指令之流程控制

v-if

示例:判断一个元素是否显示

<div id="abc">
<!--  a=true的时候显示p标签的内容-->
    <p v-if="a">显示</p>
  <p v-else>隐藏</p>
  <button type="button" @click="btn">按钮</button>
</div>
<script>
  const test = {
    data() {
      return {
        a: false
      }
    },methods: {
       btn(){
         if(this.a){
           this.a = false
         }else{
           this.a = true
         }
       }
    }
  }
  Vue.createApp(test).mount('#abc')
</script>

v-if指令必须将它添加到一个元素上。
也可以添加多个元素,将判断条件添加到父级标签:
示例:添加一个else块,此时可以把一个元素当做不可见的包裹元素,并在上面使用v-if。最终的渲染结果将不包含元素。

<div id="abc">
<template v-if="a">
  <h1>隐藏的内容</h1>
  <p>第一段内容</p>
  <p>第二段内容</p>
  <p>第三段内容</p>
</template>
  <button type="button" @click="btn">按钮</button>
</div>
<script>
  const test = {
    data() {
      return {
        a: false
      }
    },methods: {
       btn(){
         if(this.a){
           this.a = false
         }else{
           this.a = true
         }
       }
    }
  }
  Vue.createApp(test).mount('#abc')
</script>

v-else-fi多分支:

<div id="abc">
  <p v-if="a == 'A'">A</p>
  <p v-else-if="a == 'B'">B</p>
  <p v-else>其他</p>
</div>
<script>
  const test = {
    data() {
      return {
        a: 'C'
      }
    }

  }
  Vue.createApp(test).mount('#abc')
</script>

v-show

v-show:另一个用于条件性展示元素的指令,与v-if不同的是,v-show的元素始终会被渲染并保留再DOM中,所以v-show只是简单地切换元素的display CSS属性。

<div id="abc">
  <p v-show="a">文字信息</p>
</div>
<script>
  const test = {
    data() {
      return {
        a: true
      }
    }

  }
  Vue.createApp(test).mount('#abc')
</script

v-for

可以用v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用item in items 形式的特殊语法,其中items 是源数据数组,而item 则是被迭代的数组元素的别名。

当Vue 正在更新使用v-for 渲染的元素列表时,它默认使用“就地更新”的策略。如果数据项的顺序被改变,Vue 将不会移动DOM 元素来匹配数据项的顺序,而是就地更新每个元素,并且确保它们在每个索引位置正确渲染。
为了给Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一的key 属性:

<div id="abc">
<!--  遍历数组-->
    <ul>
        <li v-for="(v, xiabiao) in computer">
            {{ xiabiao }} -- {{ v }}
        </li>
    </ul>
<!--    遍历对象-->
    <ol>
        <li v-for="(v, k) in username" key="k">
            {{ k }} -- {{ v }}
        </li>
    </ol>
</div>
<script>
  const test = {
    data() {
      return {
        computer: [
                "处理器",
                "内存",
                "硬盘"
        ],
          username: {
            name1: "张三",
              name2: "李四",
              name3: "王五"
          }
      }
    }

  }
  Vue.createApp(test).mount('#abc')
</script>

v-for:选择列表案例

<div id="abc">
<select @change="select($event)">
    <option value="None">请选择</option>
    <option v-for="i in username" :key="i.id" :value="i.name">
        {{ i.id }}: {{ i.name }}
    </option>
</select>
    <p>选择当前状态:{{ selectname }}</p>
</div>
<script>
  const test = {
    data() {
      return {
        username: [
            {id: 1, name: "开机"},
            {id: 2, name: "关机"},
            {id: 3, name: "状态异常"},
                ],
          selectname: '未作出选择'
      }
    },methods: {
        select(event){
            this.selectname = event.target.value
            if(this.selectname == "None"){
                this.selectname = "未作出选择"
            }
        }
      }

  }
  Vue.createApp(test).mount('#abc')
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值