3

使用最新的 Ember,以下简单的 ContainerView 会导致错误:

弃用:不再支持使用 defaultContainer。[defaultContainer#lookup] 见: http: //git.io/EKPpnA

我想这与我将视图附加到控制器的方式有关,

请注意,如果子视图中的模板是内联编译的,则不会发生错误,只有在将外部模板提供给视图的“模板”属性时才会发生。

http://jsbin.com/uqawux/2/edit

谢谢

4

1 回答 1

1

如果您查看迁移路径:(WIP)部分,则该弃用消息引用此要点,它具有以下文本:

如果您在 parentView 的上下文之外创建视图(可能不建议这样做,但它正在发生),您将需要确保通过容器本身实例化您的视图。

this.container.lookup('view:apple')
// will provide a instance of apple view.

因此,您需要更新代码以使用容器而不是App.FooView.create().

App.IndexController = Ember.Controller.extend({
  show: function() {    
    var v = this.container.lookup('view:foo');    
    v.appendTo(App.rootElement);
  }
});

根据您的版本,您将收到一条新的警告消息:

弃用:直接在控制器上实现的动作处理程序被弃用,取而代之的是actions对象上的动作处理程序(显示在)

在这种情况下,将您的操作放在一个actions对象中:

App.IndexController = Ember.Controller.extend({
  actions: {
    show: function() {    
      var v = this.container.lookup('view:foo');    
      v.appendTo(App.rootElement);
    }
  }  
});

这是使用最新 ember 版本的更新 jsbin,没有警告http://jsbin.com/uqawux/4/edit

于 2013-10-14T12:32:30.867 回答