Meteor - 从子助手访问父模板变量

Posted

技术标签:

【中文标题】Meteor - 从子助手访问父模板变量【英文标题】:Meteor - accessing parent template vars from child helpers 【发布时间】:2016-06-10 22:22:05 【问题描述】:

我无法从子助手中获取和设置父模板变量。 我已经阅读了很多关于这个问题的页面,但我被困住了......

Template.parent.onCreated(function()   
    this.myVar = new ReactiveVar('xyz');
);  

预计可以像这样在孩子中访问:

Template.child.helpers(
setAndGetIt : function() 
    Template.parentData(1).myVar = 'testString';
    return Template.parentData(1).myVar;

);

在哪里

<template name="parent>    
    >child  
</template>  

我错过了什么吗? (这里没有Sessions解决方案……)

【问题讨论】:

顺便说一句,您可以使用 Session 代替 ReactiveVar。 我在问题中写的是......会话解决方案不是这里的情况...... :) 哦,对不起,错过了 【参考方案1】:

有一种更聪明的方法可以完成这项任务。但是您需要明确声明您希望在子模板中可以访问哪些变量。并且很可能您希望 var 具有响应性。

Template.parentTemplate.onCreated(function()
    this.myVar = new ReactiveVar('hello');
);

在 Blaze 中,像这样调用子模板时需要传递这个变量。

>child myVar=myVar 

Template.child.onRendered(function()
    console.log(this.myVar.get());
);

【讨论】:

首先它对我不起作用,“this.myVar”是“未定义”。其次,我必须从 withing child helper 中设置价值 你需要先添加reactive var包。你可以从任何地方设置/获取变量。 肯定是加的,我们在别处也用过

以上是关于Meteor - 从子助手访问父模板变量的主要内容,如果未能解决你的问题,请参考以下文章

在 Meteor 的模板渲染函数中访问父数据上下文

为啥 Meteor 模板助手不在上下文中返回变量?

如何在不使用帮助器的情况下访问 Meteor 模板中的全局变量?

在 Meteor 中访问订阅的问题

Django从父对象访问模板中的子数据

如何从子组件更改父变量?