2

我有一个 Container 视图,我将其用作我的主要包装视图,其中其他视图被换入和换出。

在 Ember 0.9.8 中,这工作得很好。但是,现在在 Ember 1.0pre 中,当我尝试交换之前已换出的视图时出现错误。

这是我的基本代码:

App.globalView = Ember.ContainerView.create({
  screenOne: App.screenOne.create(),
  screenTwo: App.screenTwo.create()
});

App.globalView.set('currentView', App.globalView.get('screenOne')); // <-- good
App.globalView.set('currentView', App.globalView.get('screenTwo')); // <-- good
App.globalView.set('currentView', App.globalView.get('screenOne')); // <-- BAD

我现在得到错误

Error: assertion failed: calling set on destroyed object
   ...from
   Ember.ContainerView.Ember.View.extend.initializeViews
    set(view, '_parentView', parentView);

我在http://jsfiddle.net/SamFent/WmfTX/有一个例子。在 jsFiddle 中,我没有看到错误,但之前的视图无法加载。

有谁知道发生了什么?

4

1 回答 1

4

Ember.ContainerView 现在在取消设置时会破坏视图,因此无法随意使用它。这是你的小提琴的一个叉子,可以满足你的要求:http: //jsfiddle.net/WmfTX/1/

如果您确实需要避免拆除和重新创建视图,请渲染两个视图并使用该isVisible属性来切换可见性。

于 2012-09-14T11:14:22.683 回答