【问题标题】:Carrying data with router.go() in Iron Router在 Iron Router 中使用 router.go() 携带数据
【发布时间】:2014-05-24 17:51:33
【问题描述】:

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

最初我以为我可以简单地使用: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>

如果我使用&lt;p&gt;Welcome {{currentUser.username}}&lt;/p&gt;,我不会收到任何错误,但也不会收到名称。 Meteor.user().username 确实返回了一个名称,但我无法将其放入模板中。

【问题讨论】:

    标签: meteor iron-router accounts


    【解决方案1】:

    “用户名”未定义,你应该使用Meteor.user().username

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

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

    在模板之间传递数据的常用方法是在路由 url 中传输文档 _id,然后使用 Iron Router 检索它并使用 doc 进行处理。

    有时将 currentSomething 存储在全局帮助器中会更容易,使用响应式 Session 变量来跟踪“某物 _id”,但它可能会导致代码非常草率,请注意!

    【讨论】:

    • 嗯,还是不行。使用:&lt;p&gt;Welcome {{currentUser.username}}&lt;/p&gt; 不会给我任何错误,但也不会传递任何数据。如果我登录 Meteor.user().username 我会得到一个字符串。我想我有一个更大的问题:) 我会在我的问题中添加更多细节。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 2014-07-06
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    相关资源
    最近更新 更多