使用Iron Router中的router.go()携带数据

时间:2014-05-24 17:51:34

标签: meteor iron-router accounts

我努力将数据从一个模板传递到另一个模板,并且考虑到这一点,我想知道这是不是我的问题。我使用内置帐户系统,我添加了新用户和身份验证,当用户登录时,我将它们转发到新模板。我希望能够在该模板中使用他们的详细信息,但我很难找到最佳方法。

最初,我认为我可以简单地使用:Router.go('userPage', {user:username});,它不会出错,但不起作用。在我的模板中,我使用:<p>Welcome {{user}}</p>

使用{{> user}}会引发'Can't find template, helper or data context key: username'错误。

有什么想法吗?

编辑:忽略其余部分,重新​​启动Meteor服务器后,此功能正在运行。

认为我在这里有一个更大的问题,所以添加更多细节:

从表单中获取一些信息,然后根据结果进行路由:

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 个答案:

答案 0 :(得分:0)

&#34;用户名&#34;未定义,您应该使用Meteor.user().username

或者更好的是,您应该使用currentUser预定义帮助程序,其中包含您可以在页面之间传递的当前登录用户。

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

在模板之间传递数据的常用方法是在路径网址中传输文档_id,然后使用铁路由器检索它并使用文档执行操作。

有时将currentSomething存储在全局帮助器中会更容易,并且有一个响应式Session变量可以跟踪&#34;某些事物_id&#34;但它可能导致相当邋code的代码,小心!