Vue 实例被创建时

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

Vue data访问

// 我们的数据对象
var data = { a: 1 }
// 该对象被加入到一个 Vue 实例中
var vm = newVue({
  data: data
})
// 他们引用相同的对象!
vm.a === data.a 
// => true
// 设置属性也会影响到原始数据
vm.a = 
2
data.a 
// => 2
// ... 反之亦然
data.a = 
3
vm.a 
// => 3

 

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

var data= { a: 1 }
var vm = newVue({
  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"

也有一些其它的钩子,在实例生命周期的不同场景下调用,如 mountedupdateddestroyed。钩子的 this 指向调用它的 Vue 实例。

 

[html]  view plain  copy
  1. <!DOCTYPE html>  
  2. <html style="height: 100%;">  
  3.   
  4.     <head>  
  5.         <meta charset="UTF-8">  
  6.         <script type="text/javascript" src="../lib/vue.v2.5.12.js"></script>  
  7.         <title>v-xxx</title>  
  8.     </head>  
  9.   
  10.     <body style="height: 100%;">  
  11.         <style>  
  12.             .style0 {  
  13.                 font-size: 25px;  
  14.                 color: green;  
  15.             }  
  16.               
  17.             .style1 {  
  18.                 background: gold;  
  19.             }  
  20.         </style>  
  21.         <!--   
  22.             VUE实例  
  23.                   
  24.             REF:  
  25.                 https://cn.vuejs.org/v2/guide/instance.html  
  26.                 http://www.runoob.com/vue2/vue-template-syntax.html  
  27.         -->  
  28.         <div id="appVue">  
  29.             <!-- VUE实例 -->  
  30.             <div style="height: 150px;background: #CCC;margin: 5px;">  
  31.                 <div style="font-size: 20px;">  
  32.                     v0.VUE对象数据访问</div>  
  33.                 <hr />  
  34.                 <div>  
  35.                     <div>  
  36.                         <input v-focus/>  
  37.                     </div>  
  38.                 </div>  
  39.             </div>  
  40.         </div>  
  41.         <script>  
  42.             var vm = new Vue({  
  43.                 el: "#appVue",  
  44.                 data: {  
  45.                     msg: "ABCDEFG",  
  46.                     msg1: "abcdefg",  
  47.                     chPart: "Key",  
  48.                     digPart: "123456",  
  49.                 },  
  50.                 computed: {  
  51.                     reverseMsg: function() {  
  52.                         return this.msg.split('').reverse().join('')  
  53.                     },  
  54.                     fullName: {  
  55.                         get: function() {  
  56.                             return this.chPart + this.digPart;  
  57.                         },  
  58.                         set: function(newVar) {  
  59.                             this.chPart = newVar;  
  60.                             this.digPart = newVar;  
  61.                         }  
  62.                     }  
  63.                 },  
  64.                 methods: {  
  65.                     reverseMsg1: function() {  
  66.                         return this.msg1.split('').reverse().join('')  
  67.                     }  
  68.                 }  
  69.             })  
  70.             // 每个Vue实例都会代理其data对象里所有的属性  
  71.             console.log(vm.reverseMsg);  
  72.             vm.msg = "AAABBB";  
  73.             console.log(vm.reverseMsg);  
  74.             vm.fullName = "Null";  
  75.             // Vue 实例暴露了一些有用的实例属性与方法。这些属性与方法都有前缀 $,  
  76.             // 以便与代理的 data 属性区分  
  77.             vm.$data.msg = "Null";  
  78.         </script>  
  79.     </body>  
  80.   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值