vue实现数据双向绑定之入门版本

vue最独特的特性之一,是其非侵入性的响应式系统。数据模型仅仅是普通的javascript对象。而当你修改时,视图会进行更新。这使得状态管理非常简单直接。

1. vue实现数据双向绑定的体现

新建index.html文档

  <!-- 数据双向绑定渲染的表现 -->
    <div id="app">
        <input type="text" v-model="msg"/> 
        {{msg}} 
    </div>
    <!-- 状态的改变会引起视图的二次渲染 -->
 	const app=new Vue({
        el:'#app',//表示elements,即元素,在这个元素内部使用vue的语法
        data:{//设置初始化的数据,类似于module的功能,即数据源
            msg:'hello world'//
        }
    })

结合MVVM理解vue数据双向绑定的体现
初始化的model通过viewmodel将数据传给view,view视图含有主动性(事件行为),vue通过v-model这个指令(内部含有一层机制,只要你正在输入,我就会获取到你的数据)将数据交viewmodel,然后viewmodel就会改变数据源(即model,告诉model你改变了),然后model会告诉view,我已经改变,你也跟着变就行了

2. vue数据双向绑定原理

	let Book={
        name:'js权威指南'
    };
    let val;
    console.log(Book.name);
    Object.defineProperty(Book,'name',{
        set(value){
          //  val = '《'+value+'》';
          	val = value;
        },
        get(){
        //数据劫持,set和get都可以进行修改
        //若Book为一个空对象,则相当于新添加了属性,同时劫持了属性
            return  '《' + va l+ ‘》’ ;
        }
    })
    Book.name='html权威指南';//实际调用的是set方法
    console.log(Book.name);

双向绑定的原理

1.实现一个监听器Observer,用来劫持并监听所有属性,如果有变动的,就通知订阅者。

2.实现一个订阅者Watcher,可以收到属性的变化通知并执行相应的函数,从而更新视图。

3.实现一个解析器Compile,可以扫描和解析每个节点的相关指令,并根据初始化模板数据以及初始化相应的订阅器。

index.html

  <!-- 数据双向绑定渲染的表现 -->
    <div id="app">
        <input type="text" v-model="msg"/> 
        {{msg}} 
    </div>
    <!-- 状态的改变会引起视图的二次渲染 -->
 	const app=new Vue({
        el:'#app',//表示elements,即元素,在这个元素内部使用vue的语法
        data:{//设置初始化的数据,类似于module的功能,即数据源
            msg:'hello world'//
        }
    })

借助index.html文档再次解释双向绑定原理
Obeserver 监听器 劫持并监听所有属性,在这里劫持并监听了v-model这个属性,如果这个值有变动了就去通知订阅者{{msg}}。
v-model也是一个指令,扫描和解析每个节点的相关指令,并根据初始化模板数据以及初始化相应的订阅器。
{{msg}}表示视图 Watcher 就是一个订阅者,接收到变化之后,就会执行相应的函数即双大括号里的语法,从而更新相应的视图

  • 10
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值