使用父数据上下文Meteor

时间:2015-05-21 23:00:52

标签: meteor

我正在努力应对那些本来应该简单的事情而且我无法得到它。有没有错误或仅仅是我?我使用两种方法创建了两个简单的例子:1)registerHelper和2)parentData: HTML是:

<body>
    This is the body
   {{> A}}
</body>

 <template name="A">
     This is "A"
        {{> B}}
    </template>

    <template name="B">
        This is "B"
        {{> C}}
    </template>

    <template name="C">
        This is "C"
        {{foo}}
    </template>

1)的Javascript是:

 Template.registerHelper(foo, function () {
    return 'Hello';
});

对于案例2)是:

Template.A.helpers({
  foo: function () {
      return 'Hello';
  }
});

Template.C.helpers({
  foo: function () {
    return Template.parentData(2);
  }
});

有什么问题?

1 个答案:

答案 0 :(得分:0)

看起来您正在尝试调用父模板的辅助函数infoMessage。这与访问父数据上下文不同。对于您的用例,我建议注册一个帮助函数,任何模板,包括A和B,都可以使用:

Template.registerHelper("infoMessage", function (dataContext) {
    return dataContext.infoMessage;
});

编辑:根据您编辑过的问题,您错过了&#34; foo&#34;周围的引号。在(1)中:

Template.registerHelper("foo", function () {
  return 'Hello';
});

然后在模板中使用它:

<template name="A">
    <div class="message info-message">{{> B}}{{infoMessage .}}</div>
</template>

<template name="B">
    <div class="wrap-popup">
        <div class="popup-img"><img src="check12.svg"></div>
        <div class="popup-item">
            <h1> Sucess</h1>
            <p>{{infoMessage ..}}Nada...</p>
        </div>
    </div>
</template>

有关详情,请参阅registering helpers上的官方Meteor文档。