如何触发功能呈现模板后,(How to trigger function after render

2019-10-21 04:11发布

我使用的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

按我的设想,完成后templateonRender功能将被触发。 我之前的意思onRender ,DOM将可无论我们使用的是模板化template

但是我得到nullonRender功能。

我希望有一个回调,它应该触发后, template在DOM可用。 所以我可以访问任何我使用模板元素template

我可以做一件事情,无论我里面写onRender ,我可以设置time就像下面的方式。

 onRender:function(){
    setTimeout(function(){console.log(document.getElementById("productInfoBtn"));},1000);
 }

如果我设置time ,工作正常,但它不是实行正确的方法。

谁能帮我。

谢谢。

Answer 1:

问题解决后,我必须使用onShow代替onRender功能。 现在,它的正常工作。



文章来源: How to trigger function after render template