使用最新的 Ember,以下简单的 ContainerView 会导致错误:
弃用:不再支持使用 defaultContainer。[defaultContainer#lookup] 见: http: //git.io/EKPpnA
我想这与我将视图附加到控制器的方式有关,
请注意,如果子视图中的模板是内联编译的,则不会发生错误,只有在将外部模板提供给视图的“模板”属性时才会发生。
http://jsbin.com/uqawux/2/edit
谢谢
使用最新的 Ember,以下简单的 ContainerView 会导致错误:
弃用:不再支持使用 defaultContainer。[defaultContainer#lookup] 见: http: //git.io/EKPpnA
我想这与我将视图附加到控制器的方式有关,
请注意,如果子视图中的模板是内联编译的,则不会发生错误,只有在将外部模板提供给视图的“模板”属性时才会发生。
http://jsbin.com/uqawux/2/edit
谢谢
如果您查看迁移路径:(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