指令 (Directives) 是带有 v- 前缀的特殊属性,职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。

内置指令

1、v-bind:响应并更新DOM特性;例如:v-bind:href  v-bind:class  v-bind:title  等等

主要用法是绑定属性,动态更新HTML元素上的属性

  1. <a v-bind:href="url">...</a>
  2. <!-- 缩写 -->
  3. <a :href="url">...</a>
    <div :title='title'>标题</div>
  1. var app = new Vue({
  2. el: '#app',
  3. data: {
  4. url: 'www.baidu.com',
        title: 'bind'
  5. },
  6. })

2、v-on:用于监听DOM事件; 例如:v-on:click  v-on:keyup

顺带讲一下方法与事件

2.1 @click 的表达式可以直接使用JavaScript 语句,也可以是一个在Vue 实例中methods 选项内的函数名,可以在方法中传递参数

  1. <!-- 完整语法 -->
  2. <a v-on:click="doSomething">...</a>
  3. <!-- 缩写 -->
  4. <a @click="doSomething()">...</a>    //是一个方法名
  5.  
  6. <p ng-if='show'>一段文本</p>
    <button @click="show=false">点击隐藏文本</button>  //直接是一个内联的语句
    <button v-on:click="count++">Add 1</button>
  1. var app = new Vue({
  2. el: '#app',
      data:{
        show: true
        counter 0
      },
  3. methods: {
  4. doSomething: function(){
  5. console.log(this.title);
  6. },
  7. }
  8. })

2.2方法与事件:

Vue 提供了一个特殊变量$event ,用于访问原生DOM 事件,可以阻止事件冒泡或者阻止链接打开

写一个阻止冒泡的例子:

  1. <div @click="stopClick1('stop1',$event)">
  2. <div @click="stopClick2('stop2',$event)">
  3. <div @click="stopClick3('stop3',$event)">阻止冒泡</div>
  4. </div>
  5. </div>
      </div>
  1. methods:{
  2. stopClick3: function(message, event){
  3. console.log(message);
  4. event.stopPropagation(); //阻止冒泡
  5. },
  6. stopClick2: function(message, event){
  7. console.log(message);
  8. },
  9. stopClick1: function(message, event){
  10. console.log(message);
  11. }
  12. }

2.3修饰符:

在@绑定的事件后加小圆点“.”,再跟一个后缀来使用修饰符。

上面的阻止冒泡事件,可以直接用户修饰符的方式写为:

  1. <div @click.stop="stopClick3('stop3')">阻止冒泡</div>  //不用通过$event事件再来写了

常用的一些修饰符有:

• .stop
• .prevent
• .capture
• .self
• .once

  1. !一阻止单击事件冒泡一〉
  2. <a @click.stop=”handle "></a>
  3. 〈!一修饰符可以串联一〉
  4. <a @click.stop.prevent=” handle ” ></a>
  5. 〈!一添加事件侦听器时使用事件捕获模式一〉
  6. <div @click . capture=”handle ”> ... </div>
  7. 〈!一只当事件在该元素本身(而不是子元素) 触发时触发回调一〉
  8. <div @click.self=” handle ”> ... </div>
  9. < !一只触发一次,组件同样适用一〉
  10. <div @click.once=” handle ”> ... </div>
  11.  
  12. 在表单元素上监昕键盘事件时,还可以使用按键修饰符,比如按下具体某个键时才调用方法:
    < !一只有在keyCode 是13 时调用vm.submit()一〉
    <input @keyup.13 =“ submit ”〉

3、v-model:数据双向绑定;用于表单输入等;例如:<input v-model="message">

4、v-show:条件渲染指令,为DOM设置css的style属性

5、v-if:条件渲染指令,动态在DOM内添加或删除DOM元素

6、v-else:条件渲染指令,必须跟v-if成对使用

7、v-else-if:判断多层条件,必须跟v-if成对使用;

8、v-text:更新元素的textContent;例如:<span v-text="msg"></span> 等同于 <span>{{msg}}</span>;

9、v-html:更新元素的innerHTML;会把标签名也带上。

10、v-for:循环指令;例如:

  1. <div id= "app ">
  2. <ul>
  3. <li v-for="book in books">{ { book.name } }</li>
  4. </ul>
  5. </div>
  1. var app =new Vue({
  2. el: '#app',
  3. data: {
  4. books: [
  5. {name: '<vue.js实战>'},
  6. {name: '<javascript语言精粹>'},
  7. {name: '<javascript高级程序设计>'}
  8. ]
  9. }
  10. });

10.1 v- for 的表达式遍历数组时支持一个可选参数作为当前项的索引, 例如:

  1. <div id="app">
  2. <ul>
  3. <li v-for="(book , index) in books ">{{ index}} - {{book.name })</li>
  4. </ul>
  5. </div>

10.2 v- for 的表达式遍历对象属性时,有两个可选参数,分别是键名和索引:

  1. <div id= "app">
  2. <ul>
  3. <li v-for="(value , key , index) in user ">
  4. { { index } } - { { key } } : { { value } }
  5. </li>
  6. </ul>
  7. </div>
  1. var app = new Vue({
  2. el: '#app',
  3. data: {
  4. name: 'Aresn',
  5. grender: '男',
  6. age:23
  7. }
  8. });

10.3 v- for 的表达式还可以迭代整数:

  1. <div id="app">
  2. <span v-for="n in 10">{{n}}</span>
  3. </div>

10.4 数组更新

当我们修改数组时, Vue 会检测到数据变化,所以用v-for 渲染的视图也会立即更新。

• push()
• pop()
• shift()
• unshit()
• splice()
• sort()
• reverse()

这些方法会改变被这些方法调用的原始数组

例如,我们将之前一个示例的数据books 添加一项:

  1. app.books.push({
  2. name: '《css世界》'
  3. });

有些方法不会改变原数组,例如:

• filter()
• concat()
• slice()

它们返回的是一个新数组,在使用这些非变异方法时,可以用新数组来替换原数组,如:

  1. app.books = app.books.filter(function (item) {
  2. return item . name.match(/JavaScript/);
  3. });

Vue 在检测到数组变化时,并不是直接重新渲染整个列表,而是最大化地复用DOM 元素。

替换的数组中,含有相同元素的项不会被重新渲染,因此可以大胆地用新数组来替换旧数组,不用担心性能问题。

10.5 过滤与排序

当你不想改变原数组,想通过一个数组的副本来做过滤或排序的显示时,可以使用计算属性来返回过滤或排序后的数组,例如:

  1. <div id="app">
  2. <ul>
  3. <template v-for="book in filterBooks">
  4. <li>书名:{{book.name}}</li>
  5. <li>作者:{{book.author}}</li>
  6. </template>
  7. </ul>
  8. </div>
  1. var app= new Vue({
  2. el: '#app',
  3. computed: {
  4. filterBooks: function(){
  5. return this.books.filter(function (book) {
  6. return book.name.match(/JavaScript/);
  7. })
  8. },
  9. }
  10. });

11、v-cloak:不需要表达式,这个指令保持在元素上直到关联实例结束编译;v-cloak 是一个解决初始化慢导致页面闪动的最佳实践;

12、v-once:也是一个不需要表达式的指令,作用是定义它的元素或组件只渲染一次,包括元素或组件的所有子节点。

首次渲染后,不再随数据的变化重新渲染,将被视为静态内容;v-once 在业务中也很少使用,当你需要进一步优化性能时,可能会用到。

13、v-pre:不需要表达式,跳过这个元素以及子元素的编译过程,以此来加快整个项目的编译速度;例如:<span v-pre>{{ this will not be compiled }}</span>;

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan

vue内置指令详解——小白速会的更多相关文章

  1. JavaWeb学习----JSP内置对象详解

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  2. Vue 内置指令 && 自定义指令

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8" /> 5 & ...

  3. MYSQL常用内置函数详解说明

    函数中可以将字段名当作变量来用,变量的值就是该列对应的所有值:在整理98在线字典数据时(http://zidian.98zw.com/),有这要一个需求,想从多音字duoyinzi字段值提取第一个拼音 ...

  4. python基础-内置函数详解

    一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...

  5. python3 内置函数详解

    内置函数详解 abs(x) 返回数字的绝对值,参数可以是整数或浮点数,如果参数是复数,则返回其大小. # 如果参数是复数,则返回其大小. >>> abs(-25) 25 >&g ...

  6. 序列内置方法详解(string/list/tuple)

    一.常用方法集合 1.1.string,字符串常用方法 以下举例是python2.7测试: 函数名称 作用 举例 str.capitalize() 字符串第一个字符如果是字母,则把字母替换为大写字母. ...

  7. Python内置方法详解

    1. 字符串内置方法详解 为何要有字符串?相对于元组.列表等,对于唯一类型的定义,字符串具有最简单的形式. 字符串往往以变量接收,变量名. 可以查看所有的字符串的内置方法,如: 1> count ...

  8. for循环与内置方法详解

    ''' for循环与内置方法详解 ''' # 循环:重复(按照某种规律的)做一件事情 # lt = [1, 2, 3, 4] # # ind = 0 # # while True: # print(l ...

  9. vue内置指令与自定义指令

    一.内置指令 1.v-bind:响应并更新DOM特性:例如:v-bind:href  v-bind:class  v-bind:title  v-bind:bb 2.v-on:用于监听DOM事件: 例 ...

随机推荐

  1. BZOJ 1079: [SCOI2008]着色方案(巧妙的dp)

    BZOJ 1079: [SCOI2008]着色方案(巧妙的dp) 题意:有\(n\)个木块排成一行,从左到右依次编号为\(1\)~\(n\).你有\(k\)种颜色的油漆,其中第\(i\)种颜色的油漆足 ...

  2. Vue-生命周期图示 注解

    根据腾讯课堂视频讲解,将官网生命周期图示进行注解,以加深印象和理解 贴一个源码示例: 注意位置和写法

  3. linux字符集介绍及解决中文乱码实战

    字符集对应配置文件:/etc/sysconfig/i18n 先备份再修改: 备份:cp /etc/sysconfig/i18n /etc/sysconfig/i18n.oldboy.20150521 ...

  4. 面向对象和面向过程,python中的类class,python中程序的入口——main方法,

    1.程序入口,让main显现出来: print(__name__)#__name___是模块中的隐藏字段,当前模块运行的函数名 if __name__ == __main__ __main__() # ...

  5. 关于LINUX各类系统资源整合

    在系统维护的过程中,随时可能有需要查看 CPU和内存的使用率,并根据相应信息分析系统状况的需求.本文介绍一下几种常见的Linux系统资源查看命令. 1.总体内存占用的查看 命令:free 图1 fre ...

  6. 深入理解Java虚拟机到底是什么

    摘自:http://blog.csdn.net/zhangjg_blog/article/details/20380971 什么是Java虚拟机 我们都知道Java程序必须在虚拟机上运行.那么虚拟机到 ...

  7. 关于Android sdkmanager目录结构的总结

    SDK Platform是指一些已经编写好的库函数,类文件,我们可以直接调用 Samples for SDK是指一些样本代码,可以导入eclipse运行出来查看里面函数的效果 以system imag ...

  8. JS如何判断滚动条是否滚到底部

    判断滚动条到底部,需要用到DOM的三个属性值,即scrollTop.clientHeight.scrollHeight.   scrollTop为滚动条在Y轴上的滚动距离.   clientHeigh ...

  9. 元素化设计原理及规则v1.0

    一.元素设计架构 元素设计架构展示在基于元素化设计的思想下,系统各元素之间如何相互协作,并完成整个系统搭建. 架构中以Entity(数据)为中心,由Entity产生数据库表结构,并且Entity作为业 ...

  10. EOS 的世界里可能再也没有小偷了

    EOS 针对以下两种情况设计了应急措施: 1. 账户被盗(私钥被盗或有权限的其他账户被盗) 2. 账户遗失(私钥遗失或有权限的其他账户遗失) ## 1.账户被盗 EOS 有可能会强制要求所有账户的 O ...