2

在我看来,我有三个下拉菜单。在准备控制器时,我正在执行以下操作:

  1. 预设绑定属性(selectedCountry、selectedSubtype、selectedCity)(this.set('selectedCountry', 'DE');
  2. 设置属性后,我为这些属性添加观察者,以便在用户更改选择时可以重新配置下拉列表。在初始化属性后,我会小心添加观察者,以免意外触发控制器。

但是,一旦视图被渲染,观察者就会立即被解雇。用户尚未执行任何操作。我不明白这一点,但我想,在 DOM 中渲染视图时,ember 会在下拉列表中设置绑定属性,这会导致观察者触发。那是:

  1. Ember 渲染视图
  2. 在模板中查看到控制器属性的绑定
  3. 根据控制器属性设置 DOM 元素属性
  4. 这以某种方式导致观察者被解雇?!?为什么!?!?

如果是这种情况,我能想到的唯一解决方案是在呈现视图后配置观察者。有一个didInsertElementfor Views,但我的问题与控制器有关。所以,我很困惑:控制器的工作是关心渲染问题吗?我不这么认为:那应该是视图的责任!但是控制器明显受到渲染顺序的影响!如何以干净的方式解决这个问题?

4

0 回答 0