我正在构建一个流星应用程序,并且在一条路线上我正在添加多个数据上下文 -
this.route('orgPage', {
path: '/org/:title',
data: {
orgs: function () {Orgs.findOne(this.params._id)},
projects: function() {Meteor.subscribe('projects', this.params._id)}
}
唯一的问题是,当我尝试在模板js文件中访问此数据时,我无法访问_id或orgs的任何属性。
我尝试了几种方法,但它总是返回undefined。如果我使用单个数据上下文,它可以很好地工作。这是功能无法正常运行 -
Template.orgPage.events({
'click #newProject': function(e) {
$('#npModal').modal();
},
'submit #npModal form': function(e, template) {
e.preventDefault();
if(!$(e.target).find('[name=newTitle]').val()) {
var projectTitle = 'Untitled'
} else {
var projectTitle = $(e.target).find('[name=newTitle]').val()
}
var theid = this._id;
var newProject = {
title: projectTitle,
organization: theid
}
Meteor.call('project', newProject, function(error, id) {
if (error)
return alert(error.reason);
$('#npModal').modal('hide');
$('#npModal').on('hidden.bs.modal', function (e) {
Router.go('newFields', {});
})
});
});
有人有什么想法吗?谢谢!
答案 0 :(得分:1)
您错过了退货声明。 function () {Orgs.findOne(this.params._id)}
应为function () {return Orgs.findOne(this.params._id)}
。此外,此函数中的this
将不会引用您想要的内容,因此您无法使用this.params
。为什么要订阅订阅作为数据上下文属性?请改为waitOn
函数。