亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁(yè) php教程 PHP開(kāi)發(fā) Angular和Vue雙向數(shù)據(jù)綁定的實(shí)現(xiàn)原理(重點(diǎn)是vue的雙向綁定)

Angular和Vue雙向數(shù)據(jù)綁定的實(shí)現(xiàn)原理(重點(diǎn)是vue的雙向綁定)

Dec 05, 2016 pm 04:25 PM
angular

我在整理javascript高級(jí)程序設(shè)計(jì)的筆記的時(shí)候看到面向?qū)ο笤O(shè)計(jì)那章,講到對(duì)象屬性分為數(shù)據(jù)屬性和訪(fǎng)問(wèn)器屬性,我們平時(shí)用的js對(duì)象90%以上都只是用到數(shù)據(jù)屬性;我們向來(lái)講解下數(shù)據(jù)屬性和訪(fǎng)問(wèn)器屬性到底是什么?

數(shù)據(jù)屬性:數(shù)據(jù)屬性包含一個(gè)數(shù)據(jù)值的位置,在這個(gè)位置可以讀取和寫(xiě)入值.

訪(fǎng)問(wèn)器屬性:訪(fǎng)問(wèn)器屬性不包含數(shù)據(jù)值;他們包含一對(duì)getter和setter函數(shù)在讀取訪(fǎng)問(wèn)器屬性時(shí),會(huì)調(diào)用getter函數(shù),這個(gè)函數(shù)負(fù)責(zé)返回有效的值,在寫(xiě)入訪(fǎng)問(wèn)器屬性時(shí),會(huì)調(diào)用setter函數(shù)并傳入新值.

這里介紹的重點(diǎn)是訪(fǎng)問(wèn)器屬性,設(shè)置對(duì)象的訪(fǎng)問(wèn)器屬性只能用es5的Object.defineProrerty()方法,如下例子:

var book={
_year:2004,
edition:1
};
Object.defineProperty(book,"year",{
get:function () {
return this._year
},
set:function (newValue) {
if(newValue>2004){
this._year=newValue;
this.edition+=newValue-2004;
}
}
});
book.year=2005;
alert(book.edition);//2
console.log(book.year);//2005

也就是當(dāng)執(zhí)行book.year=2005的時(shí)候其實(shí)是執(zhí)行了year中的set方法,當(dāng)執(zhí)行book.year的時(shí)候執(zhí)行了year的get方法;

var book={
_year:2004,
edition:1
};
Object.defineProperty(book,"year",{
get:function () {
console.log("year get")
return this._year
},
set:function (newValue) {
console.log("year set")
if(newValue>2004){
this._year=newValue;
this.edition+=newValue-2004;
}
}
});
book.year=2005;
alert(book.year);

控制臺(tái)的提示是:

22.png

這個(gè)原理就是vue雙向數(shù)據(jù)綁定的原理,我們?cè)趘ue組件中的data聲明屬性數(shù)據(jù)的時(shí)候其實(shí)在對(duì)象中的已經(jīng)將這個(gè)屬性封裝成了訪(fǎng)問(wèn)器屬性.

22.png

每個(gè)屬性都有g(shù)et和set方法,在做雙向的數(shù)據(jù)的控制都在get和set方法中,因?yàn)闊o(wú)論你是在ready(2.0是mounted了)或是在view中改變值都會(huì)觸發(fā)set方法,將新值復(fù)制進(jìn)去,在重新在view中匹配值,當(dāng)然你們有更復(fù)雜的控制操作,get方法著是讓ready中獲取的這個(gè)屬性值一直保存最新值.

angular1的雙向數(shù)據(jù)綁定是臟數(shù)據(jù)監(jiān)測(cè),簡(jiǎn)單點(diǎn)說(shuō)就是監(jiān)測(cè)新值和舊值有沒(méi)有變化,這種方式就要定時(shí)監(jiān)測(cè)了咯.兩種性能的消耗感覺(jué)不在一個(gè)層次上的啊.

就好比用html5 Sockets做后臺(tái)主動(dòng)消息推送前端和用js定時(shí)器每個(gè)5秒發(fā)送請(qǐng)求到后臺(tái)捕獲消息的性能差距一樣.

一直以為vue的data層其實(shí)就是個(gè)擺設(shè),但在api發(fā)現(xiàn)computed屬性之后data層完全可以實(shí)現(xiàn)發(fā)送ajax取數(shù)功能,沒(méi)必要在全都放到ready(2.0是mounted了)里面,這個(gè)ready(2.0是mounted了)可以只負(fù)責(zé)數(shù)據(jù)格式出來(lái),或者控制頁(yè)面的動(dòng)態(tài)效果而已.這js的結(jié)構(gòu)就像后臺(tái)MVC那樣層次功能分明清晰.這也只是我突然想到的思路還沒(méi)真正應(yīng)用到實(shí)際項(xiàng)目中,只是給在用vue的朋友提供個(gè)思路.

import data from '../assets/js/data'
export default{
data(){
return{
menu:data.menu,
inde:"",
row:"",
clomu:""
}
},
computed:{
isfull:function () {
alert(111);
return 11;
}
},
mounted(){
},
methods:{
domclick:function (i) {
if(this.inde===i){
this.inde="";
}else {
this.inde = i;
}
},
subclick:function (i,o) {
this.row=i;
this.clomu=o;
}
}
}


本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線(xiàn)人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門(mén)話(huà)題

Laravel 教程
1597
29
PHP教程
1488
72
如何在Ubuntu 24.04上安裝Angular 如何在Ubuntu 24.04上安裝Angular Mar 23, 2024 pm 12:20 PM

Angular.js是一種可自由訪(fǎng)問(wèn)的JavaScript平臺(tái),用于創(chuàng)建動(dòng)態(tài)應(yīng)用程序。它允許您通過(guò)擴(kuò)展HTML的語(yǔ)法作為模板語(yǔ)言,以快速、清晰地表示應(yīng)用程序的各個(gè)方面。Angular.js提供了一系列工具,可幫助您編寫(xiě)、更新和測(cè)試代碼。此外,它還提供了許多功能,如路由和表單管理。本指南將討論在Ubuntu24上安裝Angular的方法。首先,您需要安裝Node.js。Node.js是一個(gè)基于ChromeV8引擎的JavaScript運(yùn)行環(huán)境,可讓您在服務(wù)器端運(yùn)行JavaScript代碼。要在Ub

淺析angular中怎么使用monaco-editor 淺析angular中怎么使用monaco-editor Oct 17, 2022 pm 08:04 PM

angular中怎么使用monaco-editor?下面本篇文章記錄下最近的一次業(yè)務(wù)中用到的 monaco-editor 在 angular 中的使用,希望對(duì)大家有所幫助!

如何使用PHP和Angular進(jìn)行前端開(kāi)發(fā) 如何使用PHP和Angular進(jìn)行前端開(kāi)發(fā) May 11, 2023 pm 04:04 PM

隨著互聯(lián)網(wǎng)的飛速發(fā)展,前端開(kāi)發(fā)技術(shù)也在不斷改進(jìn)和迭代。PHP和Angular是兩種廣泛應(yīng)用于前端開(kāi)發(fā)的技術(shù)。PHP是一種服務(wù)器端腳本語(yǔ)言,可以處理表單、生成動(dòng)態(tài)頁(yè)面和管理訪(fǎng)問(wèn)權(quán)限等任務(wù)。而Angular是一種JavaScript的框架,可以用于開(kāi)發(fā)單頁(yè)面應(yīng)用和構(gòu)建組件化的Web應(yīng)用程序。本篇文章將介紹如何使用PHP和Angular進(jìn)行前端開(kāi)發(fā),以及如何將它們

聊聊Angular中的元數(shù)據(jù)(Metadata)和裝飾器(Decorator) 聊聊Angular中的元數(shù)據(jù)(Metadata)和裝飾器(Decorator) Feb 28, 2022 am 11:10 AM

本篇文章繼續(xù)Angular的學(xué)習(xí),帶大家了解一下Angular中的元數(shù)據(jù)和裝飾器,簡(jiǎn)單了解一下他們的用法,希望對(duì)大家有所幫助!

angular學(xué)習(xí)之詳解狀態(tài)管理器NgRx angular學(xué)習(xí)之詳解狀態(tài)管理器NgRx May 25, 2022 am 11:01 AM

本篇文章帶大家深入了解一下angular的狀態(tài)管理器NgRx,介紹一下NgRx的使用方法,希望對(duì)大家有所幫助!

一文探究Angular中的服務(wù)端渲染(SSR) 一文探究Angular中的服務(wù)端渲染(SSR) Dec 27, 2022 pm 07:24 PM

你知道 Angular Universal 嗎?可以幫助網(wǎng)站提供更好的 SEO 支持哦!

Angular + NG-ZORRO快速開(kāi)發(fā)一個(gè)后臺(tái)系統(tǒng) Angular + NG-ZORRO快速開(kāi)發(fā)一個(gè)后臺(tái)系統(tǒng) Apr 21, 2022 am 10:45 AM

本篇文章給大家分享一個(gè)Angular實(shí)戰(zhàn),了解一下angualr 結(jié)合 ng-zorro 如何快速開(kāi)發(fā)一個(gè)后臺(tái)系統(tǒng),希望對(duì)大家有所幫助!

使用Angular和Node進(jìn)行基于令牌的身份驗(yàn)證 使用Angular和Node進(jìn)行基于令牌的身份驗(yàn)證 Sep 01, 2023 pm 02:01 PM

身份驗(yàn)證是任何Web應(yīng)用程序中最重要的部分之一。本教程討論基于令牌的身份驗(yàn)證系統(tǒng)以及它們與傳統(tǒng)登錄系統(tǒng)的區(qū)別。在本教程結(jié)束時(shí),您將看到一個(gè)用Angular和Node.js編寫(xiě)的完整工作演示。傳統(tǒng)身份驗(yàn)證系統(tǒng)在繼續(xù)基于令牌的身份驗(yàn)證系統(tǒng)之前,讓我們先看一下傳統(tǒng)的身份驗(yàn)證系統(tǒng)。用戶(hù)在登錄表單中提供用戶(hù)名和密碼,然后點(diǎn)擊登錄。發(fā)出請(qǐng)求后,通過(guò)查詢(xún)數(shù)據(jù)庫(kù)在后端驗(yàn)證用戶(hù)。如果請(qǐng)求有效,則使用從數(shù)據(jù)庫(kù)中獲取的用戶(hù)信息創(chuàng)建會(huì)話(huà),然后在響應(yīng)頭中返回會(huì)話(huà)信息,以便將會(huì)話(huà)ID存儲(chǔ)在瀏覽器中。提供用于訪(fǎng)問(wèn)應(yīng)用程序中受

See all articles