0

さまざまな数のウィジェットを含むサイドバーを備えた 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),
           ...
        })
    });
4

1 に答える 1