Vue指令

指令

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

v-html/v-text

  • v-text
    • v-text和差值表达式的区别
      • v-text 标签的指令更新整个标签中的内容
      • 差值表达式,可以更新标签中局部的内容
  • v-html
    • 可以渲染内容中的HTML标签
    • 尽量避免使用,否则会带来危险(XSS攻击 跨站脚本攻击)

v-bind

可以绑定标签上的任何属性。

  • 动态绑定图片的路径

    
    
    
  • 绑定a标签上的id

    删除
    
    
  • 绑定class

    对象语法和数组语法

    • 对象语法

      如果isActive为true,则返回的结果为

      hei
    • 数组语法

      渲染的结果

      hei
  • 绑定style

    对象语法和数组语法

    • 对象语法

      渲染的结果

      hei
    • 数组语法

      abc
  • 简化语法

v-model

表单元素的绑定

  • 双向数据绑定

    • 数据发生变化可以更新到界面
    • 通过界面可以更改数据
  • 绑定文本框

    当文本框的值发生边框后,div中的内容也会发生变化

    
    
    {{ name }}
  • 绑定多行文本框

    
    
    {{ name }}

    注意:多行文本框中不能使用{{ name }}的方式绑定

  • 绑定复选框

    • 绑定一个复选框
    
    
    {{ checked }}
    • 绑定多个复选框

      此种方式需要input标签提供value属性

    吃饭:
    睡觉:
    打豆豆:
    {{ checklist }}
  • 绑定单选框

    
    {{sex}}
    
    
  • 绑定下拉框

    Selected: {{ selected }}

v-on

  • 绑定事件

  • 事件修饰符:

    • .prevent
    • .once
  • 简化语法

    删除
    

v-show

v-if

v-for

v-cloak

v-once

  • 一次性绑定

Vue的选项对象

当创建一个 Vue 实例时,你可以传入一个选项对象。你可以在 API 文档 中浏览完整的选项列表。

  • el 选项

    参考文档:https://cn.vuejs.org/v2/api/#el

    提供一个在页面上已存在的 DOM 元素作为 Vue 实例的挂载目标。可以是 CSS 选择器,也可以是一个 HTMLElement 实例。

    注意:

    • 不能作用到 或者
    • 也可以通过 实例.$mount() 手动挂载
  • data 选项

    参考文档:https://cn.vuejs.org/v2/api/#data

    • Vue 实例的数据对象,能够响应式数据变化(双向绑定)
    • 可以通过 vm.$data 访问原始数据对象
    • Vue 实例也代理了 data 对象上所有的属性,因此访问 vm.a 等价于访问 vm.$data.a
    • 视图中绑定的数据必须显式的初始化到 data 中
  • methods 选项

    参考文档:https://cn.vuejs.org/v2/api/#methods

    methods 将被混入到 Vue 实例中。可以直接通过 vm 实例访问这些方法,或者在指令表达式中使用。方法中的 this自动绑定为 Vue 实例。

    注意: 不应该使用箭头函数来定义 method 函数 (例如 plus: () => this.a++)。理由是箭头函数绑定了父级作用域的上下文,所以 this 将不会按照期望指向 Vue 实例,this.a 将是 undefined。

    var vm = new Vue({
      data: { a: 1 },
      methods: {
        plus: function () {
          this.a++
        }
      }
    })
    vm.plus()
    vm.a // 2
    

案例:表格操作

  • 展示列表数据
  • 删除数据
  • 添加数据

总结:

  • Vue 最大程度上减少了页面上的 DOM 操作
  • 让开发人员更专注于业务操作
  • 通过简洁的指令结合页面结构与逻辑数据
  • 代码结构更合理
  • 维护成本更低
  • 数据驱动
  • VueJS 解放了传统 JavaScript 中频繁的 DOM 操作

DevTools

https://github.com/vuejs/vue-devtools

其它知识点

过滤器

Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。

需求:对表格案例中的日期进行格式化。

{{ item.date | fmrTime('YYYY-MM-DD HH:mm:ss') }}

计算属性

模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。

  • 计算属性当依赖的data中的数据发生变化的时候执行

  • 计算属性是基于它们的依赖进行缓存的,计算属性只有在它的相关依赖发生改变时才会重新求值。

    参考文档

通过获取时间,演示计算属性和methods中方法的区别(缓存数据的差异)。

计算属性和方法的区别

  1. 方法每次调用都会执行
  2. 计算属性只有当依赖的数据方法变化才会执行

需求:表格案例中实现搜索功能


....


ref

在Vue.js中操作DOM。

需求:表格案例中让文本框默认获得焦。

  1. 给要获取焦点的元素增加ref属性
  2. 在mounted中通过$refs获取DOM元素



注意:Vue.js中不推荐直接操作DOM,除非必须否则不建议这么使用。

自定义指令

除了核心功能默认的指令,例如:v-modelv-show,Vue 也允许注册自定义指令。

需求:表格案例中让文本框默认获得焦。 给文本框增加自定义指令 v-focus




你可能感兴趣的:(Vue指令)