国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

淺談Angular 的變化檢測的方法

來源:懂視網 責編:小采 時間:2020-11-27 22:18:30
文檔

淺談Angular 的變化檢測的方法

淺談Angular 的變化檢測的方法:Change Detection (變化檢測) 是 Angular 2 中最重要的一個特性。當組件中的數據發生變化的時候,Angular 2 能檢測到數據變化并自動刷新視圖反映出相應的變化。 在介紹變化檢測之前,我們要先介紹一下瀏覽器中渲染的概念,渲染是將模型映射到視圖的過程。模
推薦度:
導讀淺談Angular 的變化檢測的方法:Change Detection (變化檢測) 是 Angular 2 中最重要的一個特性。當組件中的數據發生變化的時候,Angular 2 能檢測到數據變化并自動刷新視圖反映出相應的變化。 在介紹變化檢測之前,我們要先介紹一下瀏覽器中渲染的概念,渲染是將模型映射到視圖的過程。模

Change Detection (變化檢測) 是 Angular 2 中最重要的一個特性。當組件中的數據發生變化的時候,Angular 2 能檢測到數據變化并自動刷新視圖反映出相應的變化。

在介紹變化檢測之前,我們要先介紹一下瀏覽器中渲染的概念,渲染是將模型映射到視圖的過程。模型的值可以是 JavaScript 中的原始數據類型、對象、數組或其他數據對象。然而視圖可以是頁面中的段落、表單、按鈕等其他元素,這些頁面元素內部使用 DOM(Document Object Model) 來表示,為了更好地理解,我們來看一個具體的示例:

代碼如下:
<h4 id="greeting"></h4> <script> document.getElementById("greeting").innerHTML = "Hello World!"; </script>

這個例子很簡單,因為模型不會變化,所以頁面只會渲染一次。如果數據模型在運行時會不斷變化,那么整個過程將變得復雜。因此為了保證數據與視圖的同步,頁面將會進行多次渲染。接下來我們來考慮一下以下幾個問題:

1、什么時候模型會發生變化

2、模型產生了什么變化

3、變化后需要更新的視圖區域在哪里

4、怎么更新對應視圖區域

而變化檢測的基本目的就是解決上述問題。在 Angular 2 中當組件內的模型發生變化的時候,組件內的變化檢測器就會檢測到更新,然后通知視圖刷新。因此變化檢測器有兩個主要的任務:

1、檢測模型的變化

2、通知視圖刷新

接下來我們來分析一下什么是變化,變化是怎么產生的。

變化和事件

變化是舊模型與新模型之間的區別,換句話說變化產生了一個新的模型。讓我們來看一下下面的代碼:

import { Component } from '@angular/core'; @Component({
 selector: 'exe-counter',
 template: `
 <p>當前值:{{ counter }}</p>
 <button (click)="countUp()"> + </button>` }) export class CounterComponent {
 counter = 0;

 countUp() { this.counter++;
 }
}

頁面首次渲染完后,計數器的當前值為0。當我們點擊 + 按鈕時,計數器的 counter 值將會自動加1,之后頁面中當前值也會被更新。在這個例子中,點擊事件引起了 counter 屬性值的變化。

我們繼續看下一個例子:

import { Component, OnInit } from '@angular/core'; @Component({
 selector: 'exe-counter',
 template: `
 <p>當前值:{{ counter }}</p>
 ` }) export class CounterComponent implements OnInit {
 counter = 0;
 ngOnInit() {
 setInterval(() => { this.counter++;
 }, 1000);
 }
}

該組件通過 setInterval 定時器,實現每秒鐘 counter 值自動加1。在這種情況下,它是定時器事件引起了屬性值的變化。最后我們再來看個例子:

import { Component, OnInit } from '@angular/core'; import { Http } from '@angular/http'; @Component({
 selector: 'exe-counter',
 template: `
 <p>當前值:{{ counter }}</p>
 ` }) export class CounterComponent implements OnInit {
 counter = 0; constructor(private http: Http) {}
 ngOnInit() { this.http.get('/counter-data.json')
 .map(res => res.json())
 .subscribe(data => { this.counter = data.value;
 });
 }
}

該組件在進行初始化的時候,會發送一個 HTTP 請求去獲取初始值。當請求成功返回的時候,組件的 counter 屬性的值會被更新。在這種情況下,它是由 XHR 回調引起了屬性值的變化。

現在我們來總結一下,引起模型變化的三類事件源:

1、Events:click, mouseover, keyup ...

2、Timers:setInterval、setTimeout

3、XHRs:Ajax(GET、POST ...)

這些事件源有一個共同的特性,即它們都是異步操作。那我們可以這樣認為,所有的異步操作都有可能會引起模型的變化。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

淺談Angular 的變化檢測的方法

淺談Angular 的變化檢測的方法:Change Detection (變化檢測) 是 Angular 2 中最重要的一個特性。當組件中的數據發生變化的時候,Angular 2 能檢測到數據變化并自動刷新視圖反映出相應的變化。 在介紹變化檢測之前,我們要先介紹一下瀏覽器中渲染的概念,渲染是將模型映射到視圖的過程。模
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 999久久久免费精品国产牛牛 | 久久精品一 | 免费看欧美日韩一区二区三区 | 国产不卡一区二区三区免费视 | 在线欧美日韩精品一区二区 | 国产精品亚洲αv天堂2021 | 日韩精品免费观看 | 久久国产精品久久精 | 在线免费国产视频 | 91麻豆国产精品91久久久 | 欧美在线综合视频 | 国产精品久久久久aaaa | 欧美精品国产一区二区 | 午夜欧美在线 | 中文国产成人精品久久一区 | 亚洲午夜一区 | 我被公睡做舒服爽中文字幕 | 日韩精品一区在线 | 91狠狠干| 国产a不卡 | 国产精品资源在线播放 | 爽爽窝窝午夜精品一区二区 | 亚洲视频在线视频 | 国产亚洲综合成人91精品 | 欧美日韩色视频在线观看 | 国产成人精品免费视 | 国产日韩在线播放 | 欧美孕妇性xxxⅹ精品hd | 欧美激情亚洲一区中文字幕 | 成人特黄午夜性a一级毛片 成人国产一区二区三区精品 | 亚洲精品成人久久久影院 | 免费在线国产视频 | 91久久国产综合精品女同国语 | 亚洲欧美日本另类激情 | 欧美国产日韩另类 | 可以免费观看一级毛片黄a 另类区 | 在线亚洲欧国产精品专区 | 成人免费一级毛片在线播放视频 | 久久久久777777人人人视频 | 国产欧美曰韩一区二区三区 | 爽爽窝窝午夜精品一区二区 |