Почему шаблон пробелов не отображается полностью?

У меня странная ситуация, когда мой шаблон не отображает все поля

  • В этом шаблоне все в #each отображается правильно.
  • Однако первый {{фотограф}} в h2 пуст. Тот же шаблон. Есть идеи?
  • То же самое происходит и с другим шаблоном.
  • это можно увидеть на http://photo-story.meteor.com/photog/Dean полный код на https://github.com/deanwenick/cf07-stories

большое спасибо

'<template name="photog">
<h2>These are {{photographer}}'s stories</h2>

{{#each photog}}

        <img src="{{photos.[0]}}" alt="great image from a story">

        <div class="caption">

            <h3>{{storyName}}</h3>

            <p>Photographer: {{photographer}}</p>

            <p>Editor: <a href="/editor/{{editor}}">{{editor}}</a></p>

        </div>
{{/each}}
</template>'

2 ответа

Решение

Имя фотографа не доступно за пределами {{#each}} раздел шаблона, потому что данные, возвращаемые из вашего photog В запросе маршрута отсутствует поле фотографа верхнего уровня:

{
    "photographer" : "Dean",
    "editor" : "Dean",
    "votes" : 0,
    "photos" : [
        "/pics/wenick_20131110_171.jpg",
        "/pics/wenick_20131110_182.jpg"
    ],
    "storyName" : "D2BS West 2013",
    "_id" : "GCYR9MnYrrvxRSBQB"
}
{
    "photographer" : "Dean",
    "editor" : "Dean",
    "votes" : 1,
    "photos" : [
        "/pics/wenick_20130409_149.jpg",
        "/pics/wenick_20130409_158.jpg"
    ],
    "storyName" : "Bill's Party",
    "_id" : "tCrFAm7X6vFSbiadC"
}

Вы можете добавить еще одно возвращаемое значение данных в photog маршрут (в client/helpers/router.js) так это выглядит так:

return {
            photog: Stories.find( {photographer: this.params.photographer} ),
            photographer: this.params.photographer
        };

... а затем убедитесь, что строка, ссылающаяся на имя фотографа (в client/views/stories/photog.html) это:

<h2>These are {{photographer}}'s stories</h2>

Весь шаблон вызывается для объекта, который не показан. Позволяет всем называть этот объект верхом. Я предполагаю, что это выглядит так:

{
    "photog": [
        {
            "photographer": "name",
            "editor": "name",
            "photos": []
        },
        {
            "photographer": "name2",
            "editor": "name2",
            "photos": []
        }
    ]
}

{{#Each}} проходит через вызываемый массив photog. Внутри каждой области видимости переменной изменяется, так что вы можете получить прямой доступ к {{фотограф}}.

Но за пределами каждого из них {{фотограф}} должен ссылаться на шаблон? Это не знает. Одним из решений было бы жестко связать это с помощником шаблона. Добавьте что-то вроде этого в свой JavaScript:

Template.photog.photographer = function()
{
    return "the name";
}
Другие вопросы по тегам