2014-10-08 103 views
0

我建立一个流星应用程序,并在一个路由我添加多个数据背景下,像这样 -多个数据上下文 - 流星

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

您错过了退货声明。 function() {Orgs.findOne(this.params._id)}应该是function() {return Orgs.findOne(this.params._id)}。此外,this里面的这个函数不会引用你想要的,所以你不能使用this.params。为什么你订阅订阅作为数据上下文属性?改为在waitOn函数中执行。