91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Angular中變化檢測的示例分析

發布時間:2021-07-19 11:50:45 來源:億速云 閱讀:145 作者:小新 欄目:web開發

這篇文章主要為大家展示了“Angular中變化檢測的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Angular中變化檢測的示例分析”這篇文章吧。

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

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

<h5 id="greeting"></h5> <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 ...)

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

以上是“Angular中變化檢測的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

京山县| 东乌珠穆沁旗| 嘉峪关市| 新兴县| 鹰潭市| 顺义区| 新竹县| 德昌县| 呼玛县| 双牌县| 扎赉特旗| 聂拉木县| 永兴县| 桓仁| 达拉特旗| 沅陵县| 台湾省| 五台县| 京山县| 大庆市| 贡觉县| 渭南市| 宾川县| 南溪县| 云浮市| 德安县| 丰台区| 库尔勒市| 平山县| 永胜县| 沙坪坝区| 垦利县| 忻州市| 双桥区| 台州市| 鹿泉市| 三门峡市| 白山市| 昂仁县| 万载县| 陆丰市|