6

这里测试方法中的语句被多次调用。为什么会这样?DOM 是否被 AngularJS2 多次重新创建?

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");
    }
}
4

1 回答 1

16

{{test()}}每次 Angular 运行变更检测时都会进行评估,这可能非常频繁。

不鼓励从视图绑定到函数或方法。更喜欢将方法调用的结果分配给属性并绑定到该属性。

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

export class AppComponent { 
    ngOnInit() {
      this.test();
    }
    name = 'Angular';
    test() {
       this.someValue = "Test is called";
    }
}
于 2016-12-01T08:57:50.850 回答