• <noscript id="ggggg"><dd id="ggggg"></dd></noscript>
    <small id="ggggg"></small> <sup id="ggggg"></sup>
    <noscript id="ggggg"><dd id="ggggg"></dd></noscript>
    <tfoot id="ggggg"></tfoot>
  • <nav id="ggggg"><cite id="ggggg"></cite></nav>
    <nav id="ggggg"></nav>
    成人黃色A片免费看三更小说,精品人妻av区波多野结衣,亚洲第一极品精品无码,欧美综合区自拍亚洲综合,久久99青青精品免费观看,中文字幕在线中字日韩 ,亚洲国产精品18久久久久久,黄色在线免费观看

    Vue雙向數據綁定原理

    2021-4-14    前端達人

    1. vue雙向數據綁定是通過 數據劫持,并結合 發布-訂閱模式的方法來實現的,也就是說數據和視圖同步,數據發生變化,視圖跟著變化,視圖變化,數據也隨之發生改變

    2. 核心:關于vue實現雙向數據綁定,其核心是Object.defineProperty()方法

    3. 介紹一下Object.defineProperty()方法

    1.Object.defineProperty(obj,prop,descriptor)這個語法內有三個參數,分別是obj(要定義其上屬性的對象) prop (要定義或修改的屬性)descriptor (具體的改變方法)
    2.簡單的說 就是用這個方法來定義一個值。當調用時我們使用了它里面的get方法,當我們給這個屬性賦值的時候,又用到了它里面的set方法

    var obj = {}; Object.defineProperty(obj,'hello',{ get: function(){ console.log('調用了get方法') }, set: function(newValue){ console.log('調用了set方法,方法的值是' + newValue); } }); obj.hello; // => '調用了get方法' obj.hello = 'hi'; // => '調用了set方法,方法的值是hi' 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    4. 再介紹一下發布-訂閱模式

    在這里插入圖片描述

    原文來自于這里,我說一下我自己的理解,其實發布-訂閱模式和觀察者模式很像,但是不同的是,觀察者模式只有兩個角色,而且Obsever是知道Subject的,但是在發布-訂閱模式中,他們兩卻彼此不了解,他們是在一種類似于中間件的幫助下進行通信的,換句話說,還有第三個組件,稱為代理或消息代理或事件總線,Observer和Subject都知道該組件,該組件過濾所有傳入消息并相應的分發他們。

    5. 然后就是簡單模擬實現一下Vue的雙向數據綁定

    <input type="text"> <p></p> 
    
    • 1
    • 2

    我們要對上面兩個DOM元素實現雙向數據綁定,就是當輸入inputValue時下面的p可以及時更新inputValue內容

    <script> let input = document.querySelector('input') let p = document.querySelector('p') let obj = {} let value = '' Object.defineProperty(obj, 'inputvalue', { get() { return value }, set(newValue) { input.value = newValue
                p.innerHTML = newValue } }) // 訂閱者 DOM元素 input.value = obj.inputvalue
        p.innerHTML = obj.inputvalue // 監聽輸入的事件 input.addEventListener('keyup', function (e) { // 修改inputvalue 達到修改input.value 以及input.innerHTML // 發布者 obj.inputvalue = e.target.value // 觸發了set }) </script> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    所以在我們的代碼中,訂閱者就是頁面中的DOM元素,因為他會訂閱我們的inputvalue,而發布者就是監聽事件中的數據,一旦監聽到了數據有修改,就要發布給我們的訂閱者,也就是說輸入的數據一旦發生了變化,我們的頁面DOM元素的數據也會發生變化,所以這個中間件就是Object.defineProperty中的set方法

    6. 結果演示

    在這里插入圖片描述


    轉自:csdn 論壇 作者:Y shǔ shǔ


    藍藍設計www.lzhte.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服

    日歷

    鏈接

    個人資料

    藍藍設計的小編 http://www.lzhte.cn

    存檔

    主站蜘蛛池模板: 人妻交换中文字幕av| 九色精品国产成人综合网站 | 8av国产精品爽爽ⅴa在线观看| 亚洲综合伦理一区三区| 亚洲天堂日韩av在线| 美女无遮挡免费视频网站| 欧洲免费精品视频在线| 少妇放荡的呻吟干柴烈火动漫| 国产高潮流白浆喷水在线观看| 亚洲av无码片在线播放| 激情五月天丁香| 男女午夜爽爽的视频| 精品91精品91精品国产片| 2022国产无码在线| 国产成人精品1024免费下载| 满城县| 日韩中文网| 亚洲中文日本在线观看| 国产香蕉国产精品偷在线观看| 少妇人妻88久久中文字幕| 九色导航| 日韩欧美精品| 三級毛片三級毛片| 免费国产污网站在线观看不要卡| 人妻AV无码AV中文AV日韩AV| 亚洲日韩欧美丝袜另类自拍 | 久久久精品2019免费观看| 国产欧美日韩精品丝袜高跟鞋| 日批视频免费在线观看| 中文字幕欧美成人免费| av新版天堂在线观看| 亚洲欧洲成人精品av| 精品国产亚洲一品二品| 成人内射国产免费观看| 中文字幕VA一区二区三区| 中文字幕一区二区人妻出轨| 国产高清国际精品福利色噜噜| 色库视频| 国内不卡一区二区三区| 暖暖 免费 在线 中文日本| 99视频有精品视频在线观看|