【问题标题】:meteor spacebars cannot access parent context流星空格键无法访问父上下文
【发布时间】:2015-06-11 17:12:12
【问题描述】:

为什么这不起作用?

Template.tests.helpers
  test_value: -> "Test"
  contacts: -> Contacts.find()
  contact: -> Contacts.findOne()

示例 1:

<template name="tests">
    {{test_value}}
    {{#with contact}}
            <p>{{firstname}}</p>
            <p>{{../test_value}}</p>
    {{/with}}
</template>

../test_value 内部联系人不呈现

示例 2

<template name="tests">
    {{>testContact}}
</template>

<template name="testContact">
    {{test_value}}
    {{#with contact}}
        <p>{{firstname}}</p>
        <p>{{../test_value}}</p>
    {{/with}}
</template>

在这个例子中没有任何效果。我假设如果 testContact 模板中没有定义数据上下文,它将继承他父级的数据上下文。

示例 3

<template name="tests">
    {{>testContact}}
</template>

<template name="testContact">
    {{test_value}}
    {{#with ../contact}}
        <p>{{firstname}}</p>
        <p>{{../test_value}}</p>
    {{/with}}
</template>

也不行。

这快把我逼疯了!

编辑

示例 4

<template name="tests">
    {{#with contact}}
        {{> testContact}}
    {{/with}}
</template>

<template name="testContact">
    <p>{{firstname}}</p>
    <p>{{../test_value}}</p>
    </p>
</template>

在这里,我可以看到数据上下文是 testContact 模板中的联系人。然后我希望 {{../test_value}} 能够工作,因为 test_value 与我的助手中的联系人处于同一级别,但事实并非如此。

示例 5

<template name="tests">
    {{#each contacts}}
        {{> testContact}}
    {{/each}}
</template>

<template name="testContact">
    <p>{{firstname}}</p>
    <p>{{../test_value}}</p>

</template>

【问题讨论】:

    标签: meteor meteor-blaze spacebars


    【解决方案1】:

    在 testvalue 之前不使用 ../ 尝试示例 1。

    助手与数据上下文不同,这就是示例 2 和 3 不起作用的原因。

    如果测试值助手函数依赖于父上下文,那么您必须使用 ../ 将参数传递给测试值助手。

    【讨论】:

    • 感谢您的回答!这是否意味着我应该只使用助手来查看屏幕上的内容并使用其他内容,例如 Iron Router 来定义我的数据上下文?
    • 随心所欲地使用助手。您可以通过编写 {{> testcontact data=data testvalue=testvalue}} 将数据从助手传递到子模板
    • 很抱歉再次打扰您,但是我什么时候可以使用 ../ 呢?我在上面的问题中创建了一个示例 4。这是一个很好的例子,我希望它可以工作,但它没有......
    • 在示例 4 中,如果 testvalue 是测试数据上下文的一部分,它将起作用。如果你有 {{> tests testvalue='hello'}} 它会起作用。
    • 当然,但不添加 ../。我试过了,它确实有效,但我不明白为什么需要它。包含子模板时必须添加所有帮助程序有点麻烦。 ../ 解决方案看起来要容易得多,但我找不到任何可用的用例......
    猜你喜欢
    • 2016-04-22
    • 2015-05-06
    • 2015-08-02
    • 2015-05-24
    • 2014-02-23
    • 1970-01-01
    • 2016-07-14
    • 2015-07-29
    • 2017-08-05
    相关资源
    最近更新 更多