Перенос данных с router.go() в Iron Router

Я изо всех сил пытаюсь передать данные из одного шаблона в другой, и думаю об этом, мне интересно, если это все равно моя проблема. Я использую встроенную систему учетных записей, добавляю новых пользователей и работаю аутентификацию, и когда пользователь входит в систему, я перенаправляю их в новый шаблон. Я хотел бы иметь возможность использовать их детали в этом шаблоне, но я изо всех сил пытаюсь найти лучший способ сделать это.

Сначала я думал, что могу просто использовать: Router.go('userPage', {user:username}); который не дает ошибок, но не работает. В моем шаблоне я использую: <p>Welcome {{user}}</p>

С помощью {{> user}} бросает 'Can't find template, helper or data context key: username' ошибка.

Есть идеи?

РЕДАКТИРОВАТЬ: игнорировать остальное, после перезапуска сервера Метеор это теперь работает.

Думая, у меня есть большая проблема здесь, поэтому добавляя больше деталей:

Извлечение некоторой информации из формы и затем маршрутизация на основе результата:

Meteor.loginWithPassword(username, password, function(err) {
            if (err) {
                console.log('Logging in failed');
            } else {
                console.log('Logging in succeeded');
                console.log(username);
                Router.go('userPage');
            }
        });

Затем я хочу открыть этот шаблон и передать данные пользователя, который только что вошел в систему:

<template name="userPage">
    <div class="container">
        <h1>Welcome {{username}}</h1>
    </div>
    <p>User Page</p>
</template>

Если я использую <p>Welcome {{currentUser.username}}</p> Я не получаю ошибок, но и без имени. Meteor.user().username возвращает имя, но я не могу получить это в шаблоне.

1 ответ

Решение

"имя пользователя" не определено, вы должны использовать Meteor.user().username

Или еще лучше, вы должны использовать currentUser предопределенный помощник, который содержит текущего вошедшего в систему пользователя, который вы можете передавать между страницами.

<p>Welcome {{currentUser.username}}</p>

Обычный способ передачи данных между шаблонами - это передача документа _id в URL-адресе маршрута, затем извлечение его с помощью Iron Router и выполнение ваших действий с помощью документа.

Иногда проще хранить currentSomething в глобальном помощнике с реактивной переменной Session, отслеживающей "нечто _id", но это может привести к довольно неаккуратному коду, будьте осторожны!

Другие вопросы по тегам