Метеор: использование переменных шаблона в javascript при рендеринге шаблона

Я хочу изменить DOM с помощью javascript при загрузке (рендеринге) шаблона. Однако я не могу получить переменные, которые были переданы в шаблон в первую очередь. Кажется, единственное место, где я могу использовать эти переменные, — это сам HTML-шаблон или помощники шаблона. Но я хочу выполнить javascript (который зависит от этих переменных), когда шаблон завершит рендеринг.

HTML-код отображается нормально, но я все равно привел его здесь для справки.

HTML-шаблон:

<template name="cityDataset">
    {{#each airports}}
    <li>{{name}}
        <ul>
            <li>{{description}}</li>
            <li><a href="{{mapLink}}" target="_blank">Directions from...</a></li>
        </ul>
    </li>
    {{/each}}
</template>

Файл Javascript:

Template.cityDataset.helpers({
  airports: function() {
    console.log("helper-name: " + this.name);        // New York City
    console.log("helper-country: " + this.country);  // United States

    return CityDatasets.findOne({name: this.name, country: this.country}).airports;
  },
});

Template.cityDataset.rendered = function() {
    console.log("name: " + this.name);        // undefined
    console.log("country: " + this.country);  // undefined

    // I want to do stuff here! But I can't get the name and country :(
    //
    // doSomethingCoolToDOM(this.name, this.country);

}

Результат, который я получаю в консоли, таков:

> helper-name: New York City
> helper-country: United States
> name: undefined
> country: undefined

person adrianmc    schedule 25.01.2015    source источник


Ответы (1)


Внутри rendered вам нужно использовать this.data для доступа к контексту данных шаблона.

Template.cityDataset.rendered = function() {
  console.log("name: " + this.data.name);
  console.log("country: " + this.data.country);
}
person David Weldon    schedule 25.01.2015