2

メインのラッパービューとして使用しているコンテナビューがあり、他のビューがスワップインおよびスワップアウトされています。

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 に答える