从渲染函数中的铁路由器访问数据

时间:2014-08-03 17:27:56

标签: meteor iron-router

我试图访问javascript函数中从铁路由器传递的数据

router.js

this.route('editOrganization', {
    path: '/editOrganization',
    waitOn: function() {
      return [
        Meteor.subscribe('organization', this.userId)
      ];
    },
    data: function() {
        return Organizations.findOne();
    }
});

现在,如果我想在html(editCompany.html)中访问组织的属性,我可以执行以下操作

{{name}}

但是如何在js文件中访问相同的属性

Template.editOrganization.rendered = function() {
    //how do I access name?
}

更新: 因此,如果我点击链接来编辑组织,我可以通过

获取值
this.data.name

但是,如果我重新加载页面(相同的url),则会抛出错误,说数据为空。

1 个答案:

答案 0 :(得分:2)

可以通过渲染的函数上下文访问它。​​

Template.editOrganization.rendered = function() {
    var name = this.data && this.data.name;
};

这让很多人感到困惑,但您需要配置路由器以实际等待您使用waitOn返回的订阅。

Router.onBeforeAction('loading')

您可以在此处阅读作者的解释:

https://github.com/EventedMind/iron-router/issues/554#issuecomment-39002306