访问流星模板中的父数据上下文

Accessing parent data context in meteor templates

本文关键字:数据 上下文 流星 访问      更新时间:2023-09-26

如何在Meteor中访问父模板的数据。在下面的例子中,我想从<template name="photoGallery">访问<template name="post">模板数据。这就是我正在做的,但它不起作用:

<template name="post">
  <div class="well">
    <p class="text-left text-muted"><span class="glyphicon glyphicon-time"></span> <i>{{post.date}}</i></p>
    <div class="post-text">
      <p>{{post.text}}</p>       
    </div>
    <div class="photo-gallery">
      {{> photoGallery}}
    </div>
    <hr>
    <div class="like-post text-right">
      <button>        
        <span class="glyphicon glyphicon-heart liked"></span>
        {{post.likeCount}}
      </button>      
    </div>
  </div>
</template>

和:

<template name="photoGallery">
  {{#each post.photos}}  
    <img src="{{src}}"> //this does not work
  {{/each}}
</template>

这是我的js文件后模板:

Template.post.helpers({  

    post: {
        text: 'Teks, surat, audio we video. Postda tekst bolanda test uchin ulanyljak yazgy. Shu yazgynyn maksimum simwol sany yuz kyrk simwoldan gechmeli dal. Eger gechen yagdayynda onda kop nokatlar goyulmaly.',
        date: '31-12-205 23:59',
        likeCount: 13,
        photos: [      
          {
            src: 'http://cs625423.vk.me/v625423655/899b/W9agrD2UimQ.jpg',
            src_small: 'http://cs625423.vk.me/v625423655/899a/zkipjxINKM8.jpg',
            src_big: 'http://cs625423.vk.me/v625423655/899c/uL2EOORDYV4.jpg'        
          },
          {
            src: 'http://cs625423.vk.me/v625423655/899b/W9agrD2UimQ.jpg',
            src_small: 'http://cs625423.vk.me/v625423655/899c/uL2EOORDYV4.jpg',
            src_big: 'http://cs625423.vk.me/v625423655/899a/zkipjxINKM8.jpg'
          },
          {
            src: 'http://cs623220.vk.me/v623220655/1e3be/uj7M9HwtkbA.jpg',
            src_small: 'http://cs623220.vk.me/v623220655/1e3bd/hkoSv-zpb4Y.jpg',
            src_big: 'http://cs623220.vk.me/v623220655/1e3bf/Zb3sQa0aX0U.jpg'
          },
          {
            src: 'http://cs623216.vk.me/v623216655/16c18/3mXm6-EZ-aM.jpg',
            src_small: 'http://cs623216.vk.me/v623216655/16c17/RtKyVS-D7GA.jpg',
            src_big: 'http://cs623216.vk.me/v623216655/16c19/_jy0aZu2GEA.jpg'
          }
        ],
    ...

所需的结果是子模板访问父模板的帮助程序的结果。您可以这样设置photoGallery模板的上下文:

{{> photoGallery post}}

现在,在photoGallery内部,上下文是post,因此我们可以迭代照片:

<template name="photoGallery">
  {{#each photos}}
    <img src="{{src}}">
  {{/each}}
</template>

我认为parentData就是您想要的。

这就是我解决问题的方法。我刚刚将post.photos变量传递给子模板。在<template name="post">:中

...
<div class="photo-gallery">
  {{> photoGallery photos=post.photos}}
</div>
...

并且在<template name="photoGallery">:中

{{#each photos}}
  <img src="{{src}}">
{{/each}}

您可以使用../访问父数据

<template name="photoGallery"> {{#each ../post.photos}} <img src="{{src}}"> {{/each}} </template>

如果它不起作用,你可以尝试:

<div class="photo-gallery">
  {{#with post}}
    {{> photoGallery}}
  {{/with}}
</div>

你的照片库模板将看起来像:

<template name="photoGallery"> {{#each this.photos}} <img src="{{src}}"> {{/each}} </template>

如果您使用#with助手,photoGallery模板将获得post上下文,您可以通过this使用帖子属性。