相关疑难解决方法(0)

Angular 2如何改变检测工作?

在Angular 1中,更改检测是通过脏检查$ scope层次结构.我们将在模板,控制器或组件中隐式或明确地创建观察者.

在Angular 2中,我们不再有$ scope,但我们覆盖了setInterval,setTimeout等.我可以看看Angular如何使用它来触发$ digest,但是Angular如何确定改变了什么,特别是考虑到Object.observe从未进入浏览器?

这是一个简单的例子.服务中定义的对象在setInterval中更新.每个间隔重新编译DOM.

Angular如何能够告诉AppComponent正在观看该服务,以及该服务属性的值是否已经改变?

var InjectedService = function() {
  var val = {a:1}
  setInterval(() => val.a++, 1000);
  return val;
}

var AppComponent = ng.core
  .Component({
    selector: "app",
    template:
    `
      {{service.a}}
    `
  })
  .Class({
    constructor: function(service) {
      this.service = service;
    }
  })

AppComponent.parameters = [ new ng.core.Inject( InjectedService ) ];

document.addEventListener('DOMContentLoaded', function() {
  ng.platform.browser.bootstrap(AppComponent, [InjectedService])
});
Run Code Online (Sandbox Code Playgroud)

angularjs angular

30
推荐指数
2
解决办法
1万
查看次数

标签 统计

angular ×1

angularjs ×1