Ember.js 观察员过早开火

Ember.js 观察员过早开火,ember.js,Ember.js,我有三个下拉列表。在准备控制器时,我正在执行以下操作: 预先设置绑定属性(selectedCountry、selectedSubtype、selectedCity)(this.set('selectedCountry','DE');) 设置属性之后,我为这些属性添加了观察者,这样每当用户更改选择时,都可以重新配置下拉列表。在初始化属性之后,我会小心地添加观察者,这样我就不会意外地触发控制器 但是,一旦渲染视图,观察者将立即被激发。用户尚未执行任何操作。我不理解这一点,但我认为,在DOM中渲染视图

我有三个下拉列表。在准备控制器时,我正在执行以下操作:

  • 预先设置绑定属性(selectedCountry、selectedSubtype、selectedCity)(
    this.set('selectedCountry','DE');
  • 设置属性之后,我为这些属性添加了观察者,这样每当用户更改选择时,都可以重新配置下拉列表。在初始化属性之后,我会小心地添加观察者,这样我就不会意外地触发控制器
  • 但是,一旦渲染视图,观察者将立即被激发。用户尚未执行任何操作。我不理解这一点,但我认为,在DOM中渲染视图时,ember会在下拉列表中设置绑定属性,这会导致观察者触发。即:

  • 余烬渲染视图
  • 查看模板中与控制器属性的绑定
  • 根据控制器属性设置DOM元素属性
  • 这不知怎的导致了观察家被解雇?!?为什么
    如果是这种情况,我能想到的唯一解决方案是在渲染视图后配置观察者。对于
    视图
    ,有一个
    didInsertElement
    ,但我的问题与控制器有关。因此,我感到困惑:控制器的工作是否关心渲染问题?我不这样认为:这应该是观点的责任!但是控制器显然受到渲染顺序的影响!如何以干净的方式解决此问题?

    您能否展示您的观察者的示例代码,应该可以以这种方式实现观察者,使其在第一次调用时表现不同。我需要查看jsbin以提供更准确的详细信息。Observes有点特别,特别是当发生更改时,它会立即启动,而不会等到运行循环或类似的结束。我不会想象绑定会触发它,但我必须看到更精确的代码。在这一点上,您可以尝试在observes中抛出一些日志记录,以查看每次命中的值。