Vue入门笔记

模板语法

文本

双大括号的文本插值

Message:{{msg}}

v-once指令:一次性的指令,数据改变时,插值处的内容不会改变。

Message:{{msg}}

v-html指令:双括号会将数据解释为文本,v-html输出真正的HTML。

注意

你的站点上动态渲染的任意 HTML 可能会非常危险,因为它很容易导致 XSS 攻击。

请只对可信内容使用 HTML 插值,绝不要对用户提供的内容使用插值。

属性

v-bind指令:代表属性,在布尔特性的情况下,它的存在即暗示为 true。

使用JavaScript表达式

对于所有的数据绑定,Vue.js 都提供了完全的 JavaScript 表达式支持。

{{number+1}}

{{ok? 'yes':'no'}}

{{ message.split('').reverse().join('')}}

注意

只能访问全局变量的一个白名单,如 Math 和 Date。

不该在模板表达式中试图访问用户定义的全局变量。

指令

带有 v- 前缀的特殊特性。指令特性的值预期是单个 JavaScript 表达式 (v-for 是例外情况)。指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。

现在你看到我了

v-if 指令将根据表达式 seen 的值的真假来插入/移除

元素。

v-modal指令,实现表单输入和应用状态之间的双向绑定

参数

一些指令能够接受一些参数,在指令名称之后,用冒号表示。

动态参数

用方括号括起来的 JavaScript 表达式作为一个指令的参数。

...

这里的 attributeName 会被作为一个 JavaScript 表达式进行动态求值,求得的值将会作为最终的参数来使用。例如,如果你的 Vue 实例有一个 data 属性 attributeName,其值为 "href",那么这个绑定将等价于 v-bind:href。

使用动态参数为一个动态的事件名绑定处理函数。

...

同样地,当 eventName 的值为 "focus" 时,v-on:[eventName] 将等价于 v-on:focus.

修饰符

修饰符 (modifier) 是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。例如,.prevent 修饰符告诉 v-on 指令对于触发的事件调用 event.preventDefault():

...

缩写

v-bind缩写

...

v-on缩写

...

计算属性和侦听器

计算属性

对于任何复杂逻辑,你都应当使用计算属性。

 

Original message: "{{ message }}"

 

Computed reversed message: "{{ reversedMessage }}"

var vm = new Vue({

  el: '#example',

  data: {

   message: 'Hello'

  },

  computed: {

   // 计算属性的 getter

   reversedMessage: function () {

     // `this` 指向 vm 实例

     return this.message.split('').reverse().join('')

   }

  }

})

侦听器

通过 watch 选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。

{{answer}}

class与style绑定

对象语法

当isActive或者hasError变化时,class列表也会相应的进行更新。

  class="static" v-bind:class="{active:isActive,'text-danger':hasError}"

>

data:{

  isActive:true,

  hasError:false,

}

绑定的对象不必内联定义在模板里。

data:{

  classObject:{

    active:true,

    'text-danger':false

  }

}

同样可以绑定对象的计算属性

data:{

  isActive:true,

  error:null

},

computed:{

  classObject:function(){

    return {

      active:this.isActive && !this.error,

      'text-danger':this.error && this.error.type === 'fatal'

    }

  }

}

数组语法

data:{

  activeClass: 'active',

  errorClass: 'text-danger'

}

根据条件切换列表中的class,可以用三元表达式。

在数组语法中,使用对象语法

绑定内联样式

对象语法

v-bind:style,CSS 属性名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,记得用单引号括起来) 来命名:

data:{

  activeColor:'red',

  fontSize:30

}

直接绑定到样式对象

data: {

  styleObject: {

    color: 'red',

    fontSize: '13px'

  }

}

数组语法

v-bind:style 的数组语法可以将多个样式对象应用到同一个元素上

多重值

为 style 绑定中的属性提供一个包含多个值的数组,常用于提供多个带前缀的值,例如:

这样写只会渲染数组中最后一个被浏览器支持的值。

在本例中,如果浏览器支持不带浏览器前缀的 flexbox,那么就只会渲染 display: flex。

条件渲染

v-if,v-else

v-if用于条件性的渲染一块内容。这块内容,只有在指令的表达式返回truthy值的时候被渲染,也可以用v-else添加一个else块。

good

bad