How to get the parent template instance (of the current template)

前端 未结 5 2170
抹茶落季
抹茶落季 2020-12-03 10:55

Is there a clean way to get the parent template of the current template? Nothing is officially documented in Meteor\'s API. I\'m talking about the Blaze.TemplateInstan

5条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-03 11:24

    In the end, I've extended the template instances similarly with Meteor's parentData, like this:

    /**
     * Get the parent template instance
     * @param {Number} [levels] How many levels to go up. Default is 1
     * @returns {Blaze.TemplateInstance}
     */
    
    Blaze.TemplateInstance.prototype.parentTemplate = function (levels) {
        var view = this.view;
        if (typeof levels === "undefined") {
            levels = 1;
        }
        while (view) {
            if (view.name.substring(0, 9) === "Template." && !(levels--)) {
                return view.templateInstance();
            }
            view = view.parentView;
        }
    };
    

    Example usage: someTemplate.parentTemplate() to get the immediate parent

提交回复
热议问题