【发布时间】:2016-11-25 18:40:42
【问题描述】:
我正在尝试将我的 HTML 组件中的值绑定到服务中的属性。如果私有变量为空,那么它需要关闭并从 HTTP 调用中获取值。
但是,我注意到,一旦我绑定到 HTML 组件中的属性 gettor,它就会触发多次。
我已将示例简化为: this Plunker
get Item(): string {
console.log("Item()", this._item);
return this._item;
}
打开控制台,观察“Item() Initiated”的多个输出。我希望它只会被击中一次。 (结果与方法而不是 gettor 相同)。如果我在点击方法中使用 Gettor,它只会触发一次。
【问题讨论】:
-
因为Angular需要在每个变化检测周期调用该方法来知道返回值是否发生变化,从而相应地更新DOM。
-
谢谢,我明白了。因此,如果我要启动并点击 HTTP 服务来更新值,我想我需要检查它是否已经在进行中(或者它会多次启动逻辑)。
-
没有。你不需要做任何这些。它不能进行,因为 JS 在单线程中运行。因此,如果该线程正在处理您的 HTTP 回调,它就不能同时处理更改检测。