国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

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

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

Dec 05, 2016 pm 04:25 PM
angular

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

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

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

這里介紹的重點是訪問器屬性,設(shè)置對象的訪問器屬性只能用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的時候其實是執(zhí)行了year中的set方法,當(dāng)執(zhí)行book.year的時候執(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);

控制臺的提示是:

22.png

這個原理就是vue雙向數(shù)據(jù)綁定的原理,我們在vue組件中的data聲明屬性數(shù)據(jù)的時候其實在對象中的已經(jīng)將這個屬性封裝成了訪問器屬性.

22.png

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

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

就好比用html5 Sockets做后臺主動消息推送前端和用js定時器每個5秒發(fā)送請求到后臺捕獲消息的性能差距一樣.

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

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)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1600
29
PHP教程
1502
276
如何在Ubuntu 24.04上安裝Angular 如何在Ubuntu 24.04上安裝Angular Mar 23, 2024 pm 12:20 PM

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

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

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

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

隨著互聯(lián)網(wǎng)的飛速發(fā)展,前端開發(fā)技術(shù)也在不斷改進(jìn)和迭代。PHP和Angular是兩種廣泛應(yīng)用于前端開發(fā)的技術(shù)。PHP是一種服務(wù)器端腳本語言,可以處理表單、生成動態(tài)頁面和管理訪問權(quán)限等任務(wù)。而Angular是一種JavaScript的框架,可以用于開發(fā)單頁面應(yīng)用和構(gòu)建組件化的Web應(yīng)用程序。本篇文章將介紹如何使用PHP和Angular進(jìn)行前端開發(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ù)和裝飾器,簡單了解一下他們的用法,希望對大家有所幫助!

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

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

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

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

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

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

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

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

See all articles