1

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

在 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 子类从控制器/视图层次结构中分离出来。

4

1 回答 1

3

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

也就是说,您仍然可以完成您正在尝试做的事情的一种方法是使用未记录targetObject的,它指的controller是视图周围上下文中的。

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

希望能帮助到你。

于 2013-09-15T22:49:15.767 回答