【问题标题】:Using parent data context Meteor使用父数据上下文 Meteor
【发布时间】:2015-08-03 19:55:48
【问题描述】:

我正在为应该简单的事情而苦苦挣扎,但我无法理解。有错误还是只有我?我使用两种方法创建了两个简单的示例: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);
  }
});

怎么了?

【问题讨论】:

    标签: meteor


    【解决方案1】:

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

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

    编辑: 对于您编辑的问题,您在 (1) 中缺少“foo”周围的引号:

    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 文档。

    【讨论】:

    • 抱歉耽搁了,但我一直在度假。是的,这确实是一个好方法。但我的问题是,似乎没有任何工作:1)我使用 registerHelper 创建了一个简单的示例,但它不起作用; 2)我使用 parentData 创建了一个简单的示例,但它也无法正常工作。是我的版本还是有bug?我已经改变了我上面的例子。
    • 看起来您在修改后的问题 (1) 中缺少“foo”周围的引号。尝试添加它并让我们知道它是否有效。
    • 你是 100% 正确的......(真是一个菜鸟的错误......)。你有关于 Template.parentData 的线索吗?我还尝试在 HTML {{../../foo}} 上使用而不是 javascript 帮助程序,但它仍然无法正常工作......(我也有一个错字,我在上面更正了)。
    • 您应该只为父数据上一级,即 {{../parentField}}。您上面的评论令人困惑,因为如果“foo”是模板辅助函数,您将无法这样做。如果你能解释更多你想要做什么,我很乐意提供帮助。
    • 我正在尝试自定义 accounts-ui-unstyled 包的样式,我想用我在模板中创建的按钮替换硬编码的按钮名称,然后代替原始名称。我想使用现有的助手,使用现有的助手动态设置按钮名称和标签。我将我的按钮模板包含在现有模板中,这些帮助者正确地将它们传递给我需要的名称,所以我认为这可能是使用 parentData 的一个很好的用例。但是我不能用它做一个简单的概念证明。你能用它做一个简单的例子吗?
    猜你喜欢
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 2017-07-02
    相关资源
    最近更新 更多