javascript - 从 Iron Router 访问模板中的数据上下文数据时遇到问题

标签 javascript meteor iron-router

我有一个模板,其中的数据通过此处的 Iron Router 参数传递给它,模板的设计目的可能很明显:

lib/routes.js

// custom reset password page for child user
Router.route('/reset-password/child/:_id', {
    name: 'reset-child-password',
    template: 'childResetPassword',
    layoutTemplate: 'appLayout',
    data: function() {

        return Users.findOne({ _id: this.params._id });
    }
});

但是,当我尝试在模板中访问此子用户数据时,我收到错误提示 this.data 未定义。或 无法读取未定义的属性“配置文件”。这是我的助手和助手的模板使用。

client/templates/childResetPassword.html

...

<h3>Reset Password for {{childFirstName}}</h3>
        <form id='childResetPassword'>
          <div class="form-group">
            <input type="password" name="new-child-password" class="form-control" value=''>
          </div>

...

client/templates/helpers/childResetPassword.js

Template.childResetPassword.helpers({
    childFirstName: function() {
        console.log("Template helpers:");
        console.log(this.data);
        return this.data.profile.firstname;
    }
});

关于如何访问通过 iron 路由器数据回调传递的数据上下文有什么想法吗?我使用不当吗?

更新(仍未回答):我已验证我传递到模板数据上下文中的这个特定用户正在被发现,并且他们的个人资料填充有 firstname 属性,并且我仍然遇到同样的错误。

根据我发现的另一个问题,我试过了。我添加了一个模板呈现的回调函数,如下所示:

client/templates/helpers/childResetPassword.js

Template.childResetPassword.rendered = function() {
    console.log(this);

};

我确实在浏览器控制台中看到 this.data 包含正确的用户对象,但我的 this.data.profile.firstname 仍然失败,并且再次出现相同的控制台输出错误。如果我需要在模板渲染和模板助手之间做些什么??太困惑了!!!

最佳答案

您不必提及数据...您可以调用 this.profile.firstname。您的应用程序已经将“this”理解为返回的数据对象。

Template.childResetPassword.helpers({
    childFirstName: function() {
        return this.profile.firstname;
    }
});

关于javascript - 从 Iron Router 访问模板中的数据上下文数据时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35817111/

相关文章:

javascript - 如何将本地 CSS 更改保存到服务器记录?

javascript - 单击时来自参数的 Meteor Iron Router 数据

javascript - 铁路由器 : Load js script after template has been rendered

javascript - 在不同页面上阅读 Meteor Session

javascript - Firefox - document.execCommand (‘cut’/‘copy’ ) 被拒绝,因为它不是从短时间运行的用户生成的事件处理程序中调用的

javascript - 删除表行有效

javascript - jQuery scroll() 检测用户何时停止滚动

javascript - 传单 JS : Cannot read property 'addLayer' of undefined while rendering drawnItems on Map

javascript - 将head标签中的javascript代码放入meteor js文件中

javascript - Meteor - 显示备忘录列表中的单个备忘录页面