7

サード パーティのライブラリを使用して、didInsertElement フックで追加の DOM 要素をレンダリングするビューがあります。これらの新しい要素が追加された後、動的データをレンダリングできるように、いくつかの子ビューをそれらの中に追加する必要があります。

これが私が試したことです:

App.MyView = Ember.View.extend({
  didInsertElement: function() {
    create3rdPartyDomElements();
    var element = this.$('someSelector');
    childView = this.createChildView(App.SomeViewClass, attributesDict);
    childView.appendTo(element);
  }
});

(jsbin: http://jsbin.com/idoyic/3 )

これにより、ビューが期待どおりにレンダリングされますが、Ember RC 7 で次のアサーション エラーが発生します。

ここでアドバイスされているように、ContainerView を拡張しようとしましたが、それは機能しますが、特定の DOM セレクターに子ビューを挿入する方法がありません。親ビューの先頭に子ビューを挿入するだけです。

誰か助けてくれませんか?どうもありがとう!

4

3 に答える 3

0

didInsertElement子ビューを親ビューの非表示の div にレンダリングし、それらを切り離してフック内の任意の DOM 要素に追加できます。

http://jsbin.com/qaqome/1/

関連する問題 (ビューではなくコンポーネント) については、この質問も参照してください。

于 2015-01-27T17:56:29.660 に答える
0

次のように、ビューにプロパティを追加してみてください。

App.MyView = Ember.View.extend({
  childViewsContainer: Em.ContainerView.create({}),
  didInsertElement: function() {
    create3rdPartyDomElements();
    var element = this.$('someSelector');
    childViewsContainer.createChildView(App.SomeViewClass, attributesDict);
    childView.appendTo(element);
  }
});

その後、childViewsContainer にアクセスして、必要なことを行うことができます

于 2013-08-15T19:31:51.707 に答える