Vue(1)

Vue实例

类似js声明变量

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

//会使用 vm (ViewModel 的缩写) 这个变量名表示 Vue 实例

数据与方法

创建完实例后,data 对象中的所有的 property 加入到 Vue 的响应式系统中


var data = { a: 1 } 	// 设置对象a的值为1

var vm = new Vue({			
  data: data
})		// 一个Vue实例中,后面的data是表示上面那个

// 获得这个实例上的 property(中文翻译财产)
// 返回源数据中对应的字段
vm.a == data.a    	// => true(就是说这两个值是相等的)

// 设置 property 也会影响到原始数据
vm.a = 2		//将这个值设置成2
data.a			 // => 2(这个值也会变成2)

// ……反之亦然
data.a = 3
vm.a // => 3

注意:只有当实例被创建时就已经存在于 data 中的 property 才是响应式的
后添加的将不会响应:

vm.b = 'hi'   完全没反应

技巧:
你知道你会在晚些时候需要一个 property,但是一开始它为空或不存在,那么你仅需要设置一些初始值(就是先声明了,然后用的时候直接用)

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

Object.freeze()会阻止修改现有的 property,就是更新不好使了,不响应了

var obj = {
  foo: 'bar'
}

Object.freeze(obj)	//在中间将这个冻结了,就不会更新了

new Vue({
  el: '#app',
  data: obj
})

Vue 实例还暴露了一些有用的实例 property 与方法。它们都有前缀 $,以便与用户定义的 property 区分开来(带美元符号的是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` 改变后调用
})

生命周期钩子的函数
比如 created 钩子可以用来在一个实例被创建之后执行代码:

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

生命周期钩子的 this 上下文指向调用它的 Vue 实例。

不要在选项 property 或回调上使用箭头函数
比如 
created: () => console.log(this.a) 
或 
vm.$watch('a', newValue => this.myMethod())。
因为箭头函数并没有 this,
this 会作为变量一直向上级词法作用域查找,直至找到为止,经常导致
 Uncaught TypeError: Cannot read property of undefined 
 或
  Uncaught TypeError: this.myMethod is not a function 
  之类的错误。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值