1 つは親テンプレートで、もう 1 つはサブビューを含むテンプレートです。私の最初の親ビューはバックボーンのビューを拡張し、そのレンダリング メソッドは次のようになります
render: function () {
this.$el.append(templates["template-parent-test"](this.model));
return this;
}
この親ビューにはボタンがあります。現在、ビューにデータを入力するために使用しているボタン。基本的にこれを行います:
populateView: function () {
// create some dummy test data to match the web service
_.each(myModel, function (theModel) {
var testView = new childView({ model: theModel });
this.$('div-in-parent-view').append(testView.render().$el);
});
}
このバックボーン ビューは Backbone.View を拡張し、そのレンダリング メソッドは次のようになります。
render: function () {
console.log("rendering child view");
this.$el.html(this.template({ data: this.model.toJSON() }));
return this;
}
したがって、これは機能します。しかし、ボタンを押して親ビューを作成したくありません。初めて表示するときにデータを入力し、実際に行うべきことをボタンに実行させたいと思います。親ビューの render 関数から this.populateView() を呼び出すことができると思いますが、実際には何もレンダリングされません。しかし、ボタン イベントで this.populateView() を実行すると、レンダリングされます。なぜここに違いがあるのですか?ありがとう。