路由器中的多个数据上下文 - 流星

时间:2014-10-08 23:08:19

标签: meteor

我正在构建一个流星应用程序,并且在一条路线上我正在添加多个数据上下文 -

 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', {});
            })
        }); 
    });

有人有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您错过了退货声明。 function () {Orgs.findOne(this.params._id)}应为function () {return Orgs.findOne(this.params._id)}。此外,此函数中的this将不会引用您想要的内容,因此您无法使用this.params。为什么要订阅订阅作为数据上下文属性?请改为waitOn函数。