最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析js中mvvm模式實(shí)現(xiàn)的原理

 更新時(shí)間:2018年10月06日 10:43:58   投稿:laozhang  
在本篇文章中我們給大家分享了關(guān)于js中mvvm模式實(shí)現(xiàn)的原理的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們參考下。

以Vue.js框架為例子,使用的mvvm模式

view指的是頁面的html和css構(gòu)成的視圖。

model指的是從后端取到的數(shù)據(jù)模型

viewmodel 指的是前端開發(fā)人員組織生成和維護(hù)的視圖數(shù)據(jù)層。這一層包含的是視圖行為和數(shù)據(jù)。

視圖行為指的是如頁面加載進(jìn)來時(shí)請(qǐng)求什么,將指定的數(shù)據(jù)放到指定的元素上,點(diǎn)擊某個(gè)元素觸發(fā)某事件。當(dāng)viewmodel處理好后則會(huì)將對(duì)應(yīng)的數(shù)據(jù)展現(xiàn)到view層。

MVVM模式的優(yōu)點(diǎn)在于當(dāng)view和viewmodel的雙向綁定,當(dāng)數(shù)據(jù)改變后不需要改修改DOM結(jié)構(gòu)。

例如原生js實(shí)現(xiàn)一個(gè)input的值綁定另一個(gè)div的文本,首先需要監(jiān)聽input事件,每次改變觸發(fā)一次div節(jié)點(diǎn)的文本子節(jié)點(diǎn)進(jìn)行修改。使用了MVVM模式則可以自動(dòng)檢測到數(shù)據(jù)的改變從而修改div文本

mvvm的實(shí)現(xiàn)原理:利用Object.defineProperty(),該方法有g(shù)et、set兩個(gè)屬性方法,從而獲取對(duì)象屬性的值,給對(duì)象屬性重新賦值

//定義一個(gè)對(duì)象

let obj = {}

Object.defineProperty(obj,'txt'{

  //obj.txt屬性賦值方法,同時(shí)為input、p文本賦同一個(gè)值

  set(val){

    document.getElementById('input').value = val

    document.getElementById('output').innerHTML = val

  },

  //獲取txt屬性的方法

  get(){

    return obj;

  }

})

//監(jiān)聽事件 觸發(fā)的時(shí)候會(huì)給obj.txt重新賦值,從而實(shí)現(xiàn)雙向綁定

 document.addEventListener('keyup',(e)=>{

  obj.txt = e.target.value;

 })

相關(guān)文章

最新評(píng)論

将乐县| 增城市| 汾阳市| 宜章县| 叶城县| 巴塘县| 磴口县| 准格尔旗| 鄂托克前旗| 响水县| 张家界市| 云龙县| 潍坊市| 靖西县| 汤原县| 庄河市| 万山特区| 越西县| 南城县| 定州市| 湄潭县| 依兰县| 阆中市| 上杭县| 河间市| 囊谦县| 英德市| 米林县| 徐州市| 仙桃市| 咸阳市| 桦甸市| 汾阳市| 峡江县| 特克斯县| 武夷山市| 白沙| 阳城县| 邓州市| 雅江县| 荆州市|