我在我的应用程序中使用marionette
。我正在通过ItemView
展示regions
,如下所示。
var productInfoViewObj=new productInfoView.ProductInfoView({model:tagInformationModel.tagInformationModelObj});
exports.MyApp.bodyContainer.show(productInfoViewObj);
这是我在view
内写的代码。
exports.ProductInfoView=Backbone.Marionette.ItemView.extend({
domInfo:{
mainTemplateId:"tagProductListTpl",
tableTemplateId:"taginfoViewTpl",
tableContentDiv:"taginfoViewDiv",
//tad Info
tagInfoTabId:"tagInfoBtn",
productInfoTabId:"productInfoBtn"
},
template:function(){
return commonFunctions.templateCompilation("tagProductListTpl","");
},
onRender:function(){
console.log(document.getElementById("productInfoBtn"));
}
});
我将templateId and data
作为commonFunctions.templateCompilation
的参数传递。它将编译并返回compiled string
。该汇编结果传递给template
。
根据我的假设,完成template
后,onRender
函数将触发。我在onRender
之前的意思是,无论我们使用template
进行模板化,dom都可用。
但我在null
函数内获得了onRender
。
我想要一个回调,它应该在dom中template
之后触发。所以无论我使用template
模板化,我都可以访问元素。
我可以做一件事,无论我在onRender
内写的是什么,我都可以按照以下方式设置time
。
onRender:function(){
setTimeout(function(){console.log(document.getElementById("productInfoBtn"));},1000);
}
如果我设置time
,工作正常,但这不是正确的实施方式。
感谢。
答案 0 :(得分:0)
已解决,我必须使用onShow
而不是onRender
功能。现在它工作正常。