vue基础-插值表达式与指令

1,301 阅读2分钟

插值表达式

了解插值表达式的用法

将data中定义的数据显示到模板上。

插值表达式.png

在vue中{{ }}语法,叫做:插值表达式,大白话就是输出{{ }}中的表达式的值的语法。

把{{ }} 理解为一个占位符(一个坑), {{ msg }} 就是把msg显示在这个占位符中(把msg插到坑里面边去)

语法

{{ }} 可以

  • 写data数据字段名称
  • 对data数据字段进行表达式运算
    • 拼接
    • 算术运算
    • 三元运算

{{}}不能:

  • 声明变量,分支,循环
  • 访问在vue实例之中data之外定义自定义的变量

vue中的指令

{{ }}可以用来把数据显示在视图上,但它的功能还是相当有限的。例如,如果是一个列表数据(数组)希望使用循环来显示,它就做不到了。所以我们需要继续学习vue的指令系统。

指令

vue提供了指令(directive)功能,这些指令都是以v-开头(例如:v-for ),它们从形式上来看是标签的自定义属性(只不过是由vue提供的)

示例:

作用

指令必须用在某个标签(或者是组件)上, 用来扩展标签的原有功能。

明细

每个指令都有不同的作用,下面是一下指令 v-on v-model v-for v-text

v-html v-if v-show v-if,v-else-if,v-else v-bind

小结 vue提供指令系统来增强标签的能力 指令都是以v-开头,每个指令都有自己的作用 指令的学习基本没有先后顺序 指令要与具体的 结合一起使用 一个标签上使用多个指令

v-bind 如何使用设置img的src的内容

  <img src="{{}}"/>

作用 v-bind用来动态绑定标签上的属性值(标签上的属性值不能使用插值表达式) 格式 bind:绑定,可以用来改变this的指向 <元素 v-bind:属性名1="值1" v-bind:属性名2="值2"></元素> v-bind指令简写:冒号,例如: 一般是在属性名的=里面写一个data中的数据项, :属性名="数据项" 称之为:把x绑定在y属性上 代码

    <template>
         <h2>v-bind绑定属性值</h2>
         <p>{{name}}</p>
         <!-- 绑定属性 
          v-bind:src 可以简写成  :src 
        -->
         <!-- <img src="{{imgSrc}}"/> -->
         <img v-bind:src="imgSrc" v-bind:id="id"/>
       </template>
       <script>

            data () {
              return {
                name: "尤大大",
                id: 'imgHeader',
                imgSrc: "https://bkimg.cdn.bcebos.com/pic/4afbfbedab64034f29596c8ba6c379310b551da2"
              }
            }
       </script>
       

一道是考题 问:如下两种写法的区别是什么?

<div id="myId">写法1</div>

<div :id="myId">写法2</div>

区别答: 上面 就是一个普通的id属性; 下面这个div的id属性值要从data中的定义的myId这个中去找, 如果找不到,就会报错。

v-for

功能

列表渲染, 所在标签结构, 按照数据数量, 循环生成 语法 <标签 v-for="(值,索引值)in 目标结构" :key="唯一值"></标签> 目标结构可以是:数组/对象/数字

示例:

<template>
<div>
  <h2>v-for</h2>
  <ul>
    <!-- 
        数组
        item 就循环变量,用来指向当前的数组元素
        idx:下标 
        key要是一个在循环的过程中的唯一值
      -->
    <li v-for="(item, idx) in arr" :key="item.id">
      {{idx + 1}}, {{item.name}}, {{item}}, {{idx}}
  </li>
    <!-- {{item}} -->
  </ul>
  <hr>
  <!-- 对象 -->
  <p v-for="(value, propName) in obj" :key="propName">{{value}}-{{propName}}</p>
  <hr>
  <!-- 数字 -->
  <p v-for="idx in 100" :key="idx">{{idx}} I miss you</p>
  </div>
</template>

<script>
  export default {
    data () {
      return {
        obj: {a:1, b: 2},
        arr: [{id:1, name:'小花'}, {id:2, name:'小明'}, {id:3, name:'小白'}]
      }
    }
  }
</script>

<style>

</style>
  1. v-for的功能是对标签进行循环生成

v-show和v-if