我试图访问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),则会抛出错误,说数据为空。
答案 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