在1.0.0rc8之后查看controller.model上的观察者不工作

时间:2013-09-15 22:16:41

标签: ember.js

我有一个文本区域,当其关联控制器的模型发生变化时应该获得焦点。

在rc8之前,我使用了这个观察者:

modelChanged: function() {
  this.set('focusing', true);
  this.$().focus();
  this.set('focusing', false);
}.observes('controller.model'),

我无法在1.0.0版本或rc8中使用它。我已经确认控制器中的观察者会在预期时触发:

modelChanged: function() {
  console.log('TextArtController->modelChanged');
}.observes('model'),

但是我会提到不要让控制器在那个级别关注特定视图(我想拉不推)


经过多次挖掘后,我发现了这个变化记录:

  • 制作TextField和TextArea组件

这会从控制器/视图层次结构中切断我的textarea子类。

1 个答案:

答案 0 :(得分:3)

在最新版本的ember 1.0.0中,视图为TextField& TextArea转换为组件Ember.Component,并且由于组件作为独立视图不知道它的上下文,controller属性不再引用controller

说,你仍然可以完成你想要做的事情的方法是使用未记录的targetObject引用视图周围环境中的controller

modelChanged: function() {
  this.set('focusing', true);
  this.$().focus();
  this.set('focusing', false);
}.observes('targetObject.model'),

希望它有所帮助。