В моем приложении используется 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
, dom будет доступен независимо от того, что мы планируем, используя template
.
Но я получаю null
внутри onRender
функция.
Я хочу обратный вызов, он должен срабатывать после template
, доступного в dom. поэтому я могу получить доступ к элементам, которые я шаблонизировал, используя template
.
Я могу сделать одно, независимо от того, что я написал внутри onRender
, я могу установить time
, как следующим образом.
onRender:function(){
setTimeout(function(){console.log(document.getElementById("productInfoBtn"));},1000);
}
Если я устанавливаю time
, работает нормально, но это не правильный способ реализации.
может кто-нибудь мне помочь.
Спасибо.