首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取(当前模板的)父模板实例

如何获取(当前模板的)父模板实例
EN

Stack Overflow用户
提问于 2015-01-15 01:56:59
回答 3查看 8.8K关注 0票数 17

有没有一种干净的方法来获取当前模板的父模板?在Meteor的API中没有任何官方文档。我说的是Blaze.TemplateInstance,而不是上下文(即不是Template.parentData)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-15 19:45:55

最后,我用流星的parentData类似地扩展了模板实例,如下所示:

代码语言:javascript
复制
/**
 * 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;
    }
};

示例用法:someTemplate.parentTemplate()获取直接父级

票数 29
EN

Stack Overflow用户

发布于 2017-03-03 06:27:24

如果您不想扩展Blaze.TemplateInstance,可以像这样访问父实例:

代码语言:javascript
复制
Template.exampleTemplate.onRendered(function () {
  const instance = this;
  const parentInstance = instance.view.parentView.templateInstance();
});

仅在Meteor 1.4.x中测试

票数 2
EN

Stack Overflow用户

发布于 2018-03-15 06:03:48

您可以使用像Aldeed's template-extension这样的包

在那里可以使用以下方法:

代码语言:javascript
复制
templateInstance.parent(numLevels, includeBlockHelpers)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27949407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档