简单的ContainerView导致“不再支持使用defaultContainer”。

时间:2013-07-30 11:06:36

标签: ember.js

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

  

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

我想这与我将视图附加到控制器的方式有关[/ p>

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

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

由于

1 个答案:

答案 0 :(得分:1)

该弃用邮件引用此gist,如果您查看迁移路径:(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);
  }
});

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

  

DEPRECATION:直接在控制器上实现的动作处理程序   不赞成使用actions对象上的动作处理程序(显示于   )

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

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

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