vue基础——六大类指令

189 阅读1分钟

vue的基础语法中有六大类指令,分别为:内容渲染指令、属性绑定指令、事件绑定指令、双向绑定指令、条件渲染指令、列表渲染指令

1.内容渲染指令:常用的有三个

v-text:直接跟在元素后面,例如<p v-text="username"></p>,username是指参数,需要在vue实例中data中定义。这个指令有一个缺点,如果p标签中有内容,但在vue实例中又定义了,就会将原来的内容覆盖

{{ }}: 插值表达式,在实际开发中运用最多,它是一个内容占位符,不会覆盖原有拥有的内容,用法<p>{{ username }}</p>

v-html: 由于v-text和{{ }}只能渲染纯文本内容,故引出了v-html,当需要渲染的内容包含HTML标签时,只能通过v-html渲染,用法<p v-html>'<h4>这是一个内容渲染</h4>'</p>可以渲染出h4中的内容

2.属性绑定指令:v-bind,用在属性节点上

用法:<img v-bind:src="../../">

简写:<img :src="../../">

3.事件绑定指令:v-on

用法:

<button v-on:click="add"> </button>  
//可以简写成
<button @click="add> </button>
//需要在vue实例中添加methods方法,例如
methods:{
    add: function(){     //也可以简写成add(){}
}
}

事件修饰符(常用):

.prevent : 阻止默认行为

.stop : 阻止事件冒泡

用法:事件.prevent或事件.stop

4.双向数据绑定:v-model

①它用来辅助开发者在不操作DOM前提下,快速获取表单的数据

②它是双向绑定的,页面数据改动会同步到数据源,反之也可以,而单向绑定只能通过改变数据源来同步更新页面中的数据

③修饰符: v-model.number 这样在改变数据试可以保证修改的值会一直是数字型

                   v-model.trim 自动过滤用户输入的首尾空的字符

                   v-model.lazy 只有在页面修改完成时,失去焦点后,才会更新数据源中的数据

5.条件渲染指令:v-if  v-show

两者区别:

v-if:每次都会移除或增加元素,当值为true时,增加元素,为false时,会将整个标签元素删除

v-show:不会将标签元素删除,当值为true时,在标签中增添一个display:block属性,为false时,在标签中增添一个display:none属性

v-if可以配合v-else-if、v-else一起使用

6.列表渲染指令:v-for

用法:

item表示变量,list代表数组

<div v-for="(item,index) in list" :key="item,id"></div>  可以有第二个参数,代表一个索引值,具体用法可以参考下面:

<div id="app">
    <table class="table table-bordered table-hover table-striped">
      <thead>
        <th>索引</th>
        <th>Id</th>
        <th>姓名</th>
      </thead>
      <tbody>
        <!-- 官方建议:只要用到了 v-for 指令,那么一定要绑定一个 :key 属性 -->
        <!-- 而且,尽量把 id 作为 key 的值 -->
        <!-- 官方对 key 的值类型,是有要求的:字符串或数字类型 -->
        <!-- key 的值是千万不能重复的,否则会终端报错:Duplicate keys detected -->
        <tr v-for="(item, index) in list" :key="item.id">
          <td>{{ index }}</td>
          <td>{{ item.id }}</td>
          <td>{{ item.name }}</td>
        </tr>
      </tbody>
    </table>
  </div>

  <!-- 1. 导入 Vue 的库文件,在 window 全局就有了 Vue 这个构造函数 -->
  <script src="./lib/vue-2.6.12.js"></script>
  <!-- 2. 创建 Vue 的实例对象 -->
  <script>
    // 创建 Vue 的实例对象
    const vm = new Vue({
      // el 属性是固定的写法,表示当前 vm 实例要控制页面上的哪个区域,接收的值是一个选择器
      el: '#app',
      // data 对象就是要渲染到页面上的数据
      data: {
        list: [
          { id: 1, name: '张三' },
          { id: 2, name: '李四' },
          { id: 3, name: '王五' },
          { id: 4, name: '张三' },
        ]
      }
    })
  </script>

其中有一个key属性:

①key的值只能是字符串或数字类型

②key的值必须具有唯一性

③使用v-for时建议带上key的值