如何重新配置​​视图以不在Ember JS中使用defaultContainer

时间:2013-05-06 16:35:31

标签: javascript ember.js

我有一个视图,我需要动态创建并插入Ember应用程序(off master-v1.0.0-rc.3-178-ge031b24),最近这个视图已经开始产生通知:

  

弃用:不再支持使用defaultContainer。   [defaultContainer#查找]

我已经尝试修改我正在做的事情以纠正我的实现,但我无法找到我需要做的事情。

目前,我正在路由设置中将新的ViewContainer附加到控制器:

App.ThingRoute = Em.Route.extend
  setupDetailContainers: (controller) ->
    controller.set('imageContainer', Em.ContainerView.create())
    controller.get('imageContainer').appendTo(App.rootElement)

然后在控制器中,当他们点击图像缩略图时,将插入完整尺寸:

showFullImage: (image) ->
  image_full = image.asset_url.replace(':size', 'original')
  container = @get('imageContainer')
  container.pushObject App.ShowImageView.create({image: image_full})

有关正确执行此操作的指导,以删除弃用警告,我们将不胜感激。

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,但在弃用消息之前,所以Ember正在抛出错误。

看这里https://github.com/emberjs/ember.js/issues/2597

最重要的是,您需要在将要创建子项的视图中使用createChildView,以便创建正确的父 - 子层次结构。

答案 1 :(得分:1)

更新到v1.0.0-rc.3-292-g39e9ef7后,我开始遇到此问题。对我来说,问题是使用childView而不是create()定义extend()。例如,我做过:

App.FooView = Ember.View.extend({
    templateName: 'fooTemplate'
    , childViews: ['barView']
    , barView: Ember.View.create({
        ... bindings and stuff ....
    })
    .... more and more ....
});

......当我换行时,我收到的通知就消失了:

    , barView: Ember.View.create({

......来:

    , barView: Ember.View.extend({

希望这可以帮助那些可能在类似情况下发出此通知的人。