2016-12-01 35 views
2

這裏測試方法中的語句被稱爲多次。這是爲什麼發生? DOM是由AngularJS2多次重新創建的?模板中的{{call()}}多次執行方法塊?

import { Component } from '@angular/core'; 

@Component({ 
    selector: 'my-app', 
    template: `<div>Method Call {{test()}}</div>>` 
}) 

export class AppComponent { 
    name = 'Angular'; 
    test() { 
     console.log("Test is called"); 
    } 
} 

回答

6

{{test()}}每次評估角度運行變化檢測,這可能是相當頻繁的。

從視圖中綁定到函數或方法是不鼓勵的。優先將方法調用的結果分配給一個屬性,並將其綁定到該屬性。

@Component({ 
    selector: 'my-app', 
    template: `<div>Method Call {{someValue}}</div>>` 
}) 

export class AppComponent { 
    ngOnInit() { 
     this.test(); 
    } 
    name = 'Angular'; 
    test() { 
     this.someValue = "Test is called"; 
    } 
} 
+0

嗯!什麼是變化檢測?如果你能通過提供一些參考來幫助我? :) –

+0

http://blog.thoughtram.io/angular/2016/02/22/angular-2-change-detection-explained.html –