欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

6.数据与方法---(vue入门 文档学习记录)

程序员文章站 2022-06-06 19:05:41
...

数据与方法

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

// 我们的数据对象
var data = { a: 1 }

// 该对象被加入到一个 Vue 实例中
var vm = new Vue({
  data: data
})

// 获得这个实例上的属性
// 返回源数据中对应的字段
vm.a == data.a // => true

// 设置属性也会影响到原始数据
vm.a = 2
data.a // => 2

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

我们首先分析一下上面的代码:

1.可以先声明对象,再将对象加入到Vue实例中,使其加入到响应式系统中,并且在数据data声明后的任意地方对其进行重新赋值,都可以直接响应到vue实例中反馈到页面上.

2.vue实例中的数据调用方式
在js中 :vm.a 与data.a
在页面上{{a}}

3.vm.a == data.a 并且对两个式子中任意一个重新赋值.另外的值也随之改变,这就是双向绑定.

4.只有vue实例被创建时data中存在的属性才是响应式的.以后添加的属性都不是.

5.Object.freeze()方法可以用来阻止vue参数改变时的响应,原理(TODO),猜测是解掉了双向绑定,感觉双向绑定是使用的中间件(或者是对象)来实现的.这里先猜测一下,具体的原理,循序渐进的学吧.但是看看下面是object.freeze()的用法:

<body>
		<div>
			<span id="app8">		
					{{message}}				
			</span>
		</div>
		<script>
			var data={
				message:"dddd"
			}
			Object.freeze(data)	
			
			var vm=	new Vue({
					el:"#app8",
					data:data
			})
			data.message=4	
		</script>
	</body>

方法的调用放在了data声明与vue声明之间,这时,可以阻断.
那么放在它们两个下面呢?

<div>
			<span id="app8">		
					{{message}}				
			</span>
		</div>
		<script>
			var data={
				message:"dddd"
			}
			
			
			var vm=	new Vue({
					el:"#app8",
					data:data
			})
			Object.freeze(data)	
			data.message=4	
		</script>

这时发现页面仍然可以响应数据的变化.
所以,该方法只是阻断了两者的绑定,如果两者已经绑定了,那么,这个方法将没有任何效果.