• <center id="sm46c"></center>
  • <dfn id="sm46c"></dfn>
  • <strike id="sm46c"></strike>
  • <cite id="sm46c"><source id="sm46c"></source></cite>
    • <strike id="sm46c"><source id="sm46c"></source></strike>
      <option id="sm46c"></option>
      国产精品天天看天天狠,女高中生强奷系列在线播放,久久无码免费的a毛片大全,国产日韩综合av在线,亚洲国产中文综合专区在,特殊重囗味sm在线观看无码,中文字幕一区二区三区四区在线,无码任你躁久久久久久老妇蜜桃

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

      日歷

      鏈接

      個人資料

      藍藍設計的小編 http://www.li-bodun.cn

      存檔

      主站蜘蛛池模板: 久久黄色免费电影| 性一交一乱一伦一视频一二三区| 国产色无码精品视频国产| 91久久精品无码人妻系列| 日韩精品三区二区三区| 波多野42部无码喷潮在线 | 国语自产精品视频在线看| 亚洲精品区二区三区蜜桃 | 午夜av亚洲一码二中文字幕青青| 日本护士╳╳╳hd少妇| 成人午夜在线播放| 国产成人精品无码一区二| 日韩色无码一级毛片一区二区-百| 国产国拍亚洲精品永久不卡| 亚洲日韩久热中文字幕| 久久草莓香蕉频线观| 国产精品亚洲二区在线看| 国产自产精品露脸刺激91在线 | 婷婷综合在线观看丁香| 国产99在线 | 亚洲| 亚洲a∨精品无码一区二区| 白丝乳交内射一二三区| 国产精品第一区亚洲精品| 最新AV中文字幕无码专区| 久热中文字幕在线观看| 久热这里有精品视频播放| 亚洲av午夜成人片| 久久99热只有频精品6狠狠| 成人网站国产在线视频内射视频| 久久www免费人成—看片| 国产精品亚洲一区二区三区喷水| 久热这里只有精品99国产6| 亚洲中文欧美日韩在线人| 亚洲成AV人片在线观看麦芽| 人妻无码中文专区久久app| 色婷婷综合和线在线| 日日碰狠狠躁久久躁96avv| 玩两个丰满老熟女久久网| 在线观看成人永久免费网站| 亚洲精品熟女一区二区| 国产不卡免费一区二区|