3

ここでの回答に沿って、id でプレースホルダー div にビューを追加しようとしています: How can I dynamic insert a new template into the DOM with Ember? .

insertInfoBox:function (context) {
    var infoBoxView = App.LocatorInfoBox.create({
        context:context
    });

    infoBoxView.appendTo('#infoBoxHolder');
},

次のエラーが表示されます: Uncaught Error:

アサーションに失敗しました: 既存の Ember.View に追加することはできません。代わりに Ember.ContainerView の使用を検討してください。

「infoBoxHolder」div は別のビュー内にネストされていますが、それ自体はビューではありません。parentView の子として infoBoxView を設定した場合 (親をコンテナー ビューに変更した場合)、ビューを親コンテナー ビューのルート要素に直接挿入するのではなく、子 div 'infoBoxHolder' に挿入する方法がわかりません。 .

4

1 に答える 1

0

なぜこれを行う必要があるのか​​ わかりませんが、didInsertElement 関数を使用できます。何かのようなもの:

App.MyView = Ember.View.extend({
    didInsertElement: function() {
        $('#elementId').append(...);
    }
});

私がそれを行う方法は、次のようなテンプレートを使用することです。

App.MyView = Ember.View.extend({
    template: Ember.Handlebars.compile('{{#if someCondition}}{{MyApp.MyOtherView valueBInding="..."}}{{/else}}');
});
于 2012-12-07T18:14:28.993 に答える