さまざまな数のウィジェットを含むサイドバーを備えた Ember アプリケーションがあります。ウィジェット ビューを格納するために Ember.ContainerView を使用しています。
コンテナー ビューへの入力は正常に機能します (すべてのウィジェットが適切にレンダリングされます)。
問題は、ContainerView を更新したい場合 (アプリケーションの状態が変化するため、新しいウィジェットをロードする必要があるため)、現在の childViewsを削除できないことです。view.removeChild(child)
child.remove()
remove()
これは、呼び出しごとにEmberがDOMを更新することに関係していると思いますが、わかりません。this.set('childViews',[])
また、各ビューを個別に削除する代わりに使用しようとしましたが、ビュー全体が壊れます。
ここで何か不足していますか?
コード:
// Clear current views
this.get('childViews').forEach(function(_view) {
view.removeChild(_view);
_view.remove();
});
var view = this,
childViews = this.get('childViews');
// Create new views
this.get('controller.content').forEach(function (widgetData) {
childViews.pushObject(App.WidgetView.create({
controller: App.WidgetController.create(widgetData),
...
})
});