zoukankan      html  css  js  c++  java
  • vue实例

    创建一个Vue的实例

    每个Vue应用都是通过Vue函数创建一个新的Vue实例开始的:

    var vm = new Vue({
      //选项
    })

    当创建一个Vue实例时,就传入了一个选项对象,可以通过这些选项创建想要的行为。一个Vue应用有一个通过new Vue创建的根Vue实例,以及可选的嵌套的、可复用的组件树组成。

    数据与方法

    当一个Vue实例被创建时,它向Vue的响应式系统中加入了其data对象中能找到的所有的属性,当这些属性的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。

    // 我们的数据对象
    var data = { a: 1 }
    // 该对象被加入到一个 Vue 实例中
    var vm = new Vue({
      data: data
    })
    // 他们引用相同的对象!
    vm.a === data.a    // => true
    // 设置属性也会影响到原始数据
    vm.a = 2
    data.a           // => 更新为2
    // ... and vice-versa
    data.a = 3
    vm.a             // =>更新为 3

    上述代码中,当数据发生变化时,视图会重渲染,但是只有当实例被创建时data中存在的属性是响应式的,也就是说如果你添加可一个新的属性,例如vm.b='h1',那么b的改动将不会触发任何视图的更新。所以如果你知道你在晚些时候会需要一个属性,但是一开始它为空或不存在,那么只需要设置一些初始值,如下:

    data: {
      newTodoText: '',
      visitCount: 0,
      hideCompletedTodos: false,
      todos: [],
      error: null
    }

    除了 data 属性,Vue 实例暴露了一些有用的实例属性与方法。它们都有前缀 $,以便与用户定义的属性区分开来。例如:

    var data = { a: 1 }
    var vm = new Vue({
      el: '#example',
      data: data
    })
    vm.$data === data // => true
    vm.$el === document.getElementById('example') // => true
    // $watch 是一个实例方法
    vm.$watch('a', function (newValue, oldValue) {
      // 这个回调将在 `vm.a` 改变后调用
    })

    实例生命周期

    每个 Vue 实例在被创建之前都要经过一系列的初始化过程。例如需要设置数据监听、编译模板、挂载实例到 DOM、在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,给予用户机会在一些特定的场景下添加他们自己的代码。
    比如 created 钩子可以用来在一个实例被创建之后执行代码:

    new Vue({
      data: {
        a: 1
      },
      created: function () {
        // `this` 指向 vm 实例
        console.log('a is: ' + this.a)
      }
    })
    // => "a is: 1"

    也有一些其它的钩子,在实例生命周期的不同场景下调用,如 mounted、updated、destroyed。钩子的 this 指向调用它的 Vue 实例。
    不要选项属性或回调上使用箭头函数(相当于匿名函数),比如 created: () => console.log(this.a) 或 vm.$watch('a', newValue => this.myMethod())。因为箭头函数是和父级上下文绑定在一起的,this 不会是如你做预期的 Vue 实例,且 this.a 或 this.myMethod 也会是未定义的。

    生命周期图示

  • 相关阅读:
    LeetCode Subsets II
    LeetCode Rotate Image
    LeetCode Palidrome Number
    LeetCode Generate Parentheses
    LeetCode Maximum Subarray
    LeetCode Set Matrix Zeroes
    LeetCode Remove Nth Node From End of List
    Linux Loop设备 使用
    Linux 文件系统大小调整
    LeetCode N-Queens II
  • 原文地址:https://www.cnblogs.com/lmjZone/p/7739284.html
Copyright © 2011-2022 走看看