我對單個頁面站點使用Backbone.js,Require.js和Underscore.js。如何知道骨幹視圖模板何時完成呈現?
我有一個處理的交換進出的子視圖的容器圖。
對於我的子視圖之一,我需要在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;
});
的$( '#myForm的')提交()調用渲染()實際上並沒有提交表單。大概這是因爲HTML仍在加載並且文檔尚未準備好。
如果我移動$(「#myForm的」)。提交()叫出我的容器視圖,我可以讓它工作,但我想子視圖自己的提交表單的。我的容器視圖(和其他不相關的子視圖)不需要知道或關心在SubView中發生的情況。
了哪些子視圖(並且僅在子視圖),以檢測到HTML滿載,這樣我可以調用提交的最佳方式?
我發現東西的作品,但我不知道這是最好的答案。我發現Underscore.js的延遲()函數: 呈現:功能(eventName的){$ (this.el)的.html(this.template({配置:配置,字符串:字符串})); (函數(){$('#imsForm')。submit();}); 返回此; }, 根據文檔,defer()「延遲調用函數,直到當前調用棧已經清除」。 這似乎是推遲了我足夠,以便我可以調用提交,但它會始終做伎倆?有沒有更適合我的問題的解決方案? – user1524807 2012-07-14 00:45:34