単一ページのサイトに Backbone.js、Require.js、および Underscore.js を使用しています。
サブビューの入れ替えを処理するコンテナ ビューがあります。
サブビューの 1 つで、HTML テンプレートのレンダリングがいつ終了するかを知る必要があります。理由は次のとおりです。サブビュー (view_subview.html) の HTML テンプレートには、iframe とフォームが含まれています。
<iframe name="myIFrame" id="myIFrame"></iframe>
<form action="http://myendpt.com/do" method="get" id="myForm" target="myIFrame">
<input type="hidden" name="param1" value="value1"/>
</form>
フォームを送信すると、myendpt.com/do が iframe に表示されるコンテンツの生成を処理します。
ロードされたらフォームを送信できるように、タイミングを把握しようとしています。
私のサブビューは次のようになります。
define([
'jQuery',
'Underscore',
'Backbone',
'config',
'text!templates/view_subview.html'
], function ($, _, Backbone, Config, tpl) {
var SubView = Backbone.View.extend({
template: _.template(tpl),
initialize: function () {
},
render: function (eventName) {
$(this.el).html(this.template({config: Config}));
$('#myForm').submit();
return this;
},
});
return SubView;
});
render() の $('#myForm').submit() 呼び出しは、実際にはフォームを送信しません。これはおそらく、HTML がまだロード中で、ドキュメントがまだ準備できていないためです。
$('#myForm').submit() 呼び出しをコンテナー ビューに移動すると、機能させることができますが、SubView がフォームの送信を所有するようにしたいと考えています。私のコンテナー ビュー (およびその他の無関係なサブビュー) は、SubView で何が起こるかを知ったり気にしたりする必要はありません。
送信を呼び出すことができるように、HTML が完全に読み込まれていることを SubView (および SubView のみ) で検出する最良の方法は何ですか?