【问题标题】:Access user profile information for onRender template using iron-router使用 iron-router 访问 onRender 模板的用户配置文件信息
【发布时间】:2016-04-01 17:56:45
【问题描述】:

我正在尝试在客户端上的代码中访问我的用户个人资料页面 onRendered 的用户数据。

我的客户端有这个:

 Template.profile.onRendered(function () {
      $('#qrblock').qrcode({text: <I want to show user's qrUrl here>});
    });

这是创建用户时的用户架构:

Accounts.createUser({
    username: username,
    emails: [
      { address: email, verified: false }
    ],
    password: password,
    createdAt: new Date(),
    profile:{
      firstName: firstName,
      lastName: lastName,
    },
    qrUrl: 'test.meteor.com/@' + username
  },
...
...
...

这是我的模板:

<template name="profile">
<div class="container-fluid">
    Username:   {{username}}<br />
    {{#with profile}}
        Profile name: {{firstName}} {{lastName}}
    {{/with}}
    <div id="qrblock"></div>
</div>
</template>

这是我的路由器和控制器:

Router.route('/@:username', {
  name: 'profile',
  controller: 'ProfileController'
});

ProfileController = RouteController.extend({
  template: 'profile',
  waitOn: function() {
    return Meteor.subscribe('userProfile', this.params.username);
  },
  data: function() {
    var username = Router.current().params.username;
    return Meteor.users.findOne({
      username: username
    });
  }
})

我对流星路由的东西不是很好,所以在访问特定个人资料页面的用户数据时,我感到很困惑。我希望我正在尝试做的事情是可能的。

如何在我的个人资料模板 onRendered 函数中使用用户数据?

【问题讨论】:

  • 我刚刚修好了!我的问题是用户模式,它似乎不喜欢我只是在配置文件括号之外制作一个 qrUrl。我在那里添加了它,它工作得很好。感谢您的 this.data.qrUrl 技巧

标签: jquery meteor iron-router


【解决方案1】:

您可以在 Template.myTemplate.onCreatedTemplate.myTemplate.onRenderedTemplate.myTemplate.onDestroyed 函数中使用 this 访问模板实例。

如果要访问数据上下文,可以使用this.data

Template.profile.onRendered(function() {
    $('#qrblock').qrcode({
        text: this.data.qrUrl
    });
});

【讨论】:

    【解决方案2】:

    对于将来遇到类似问题的任何人:

    通过简单地检查页面的 url 并将其制作为 qr 代码文本,有一种更简单、更动态的方式来实现我想要的。这消除了为每个用户存储 qrUrl 的需要,这意味着您不必为测试站点和部署的站点提供不同的版本。

    代码在这里:

    Template.profile.onRendered(function () {
      console.log(this.data.qrUrl);
      var url = window.location.href;
      $('#qrblock').qrcode({text: url});
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-21
      • 1970-01-01
      • 2010-09-30
      • 2014-01-25
      • 2014-06-01
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      相关资源
      最近更新 更多