铁路由器 - 无法访问多个数据上下文

时间:2014-05-28 01:17:35

标签: meteor iron-router spacebars meteor-helper

我需要从模板助手访问多个数据源。我设法用铁路由器发送多个数据源。

//router.js
...

papers: function() {
  return Papers.find();
},
data: function() {
    return {
      papers: this.papers(),
      check: {
        done: 'ok'
      },
      open: 'upper'
    };
}

...

问题在于我无法访问这些对象的属性超过两个级别。

我的意思是:

<template name="page">
  {{pageName}}
</template>

...

Template.page.helpers({
  pageName: function() {
    return this.papers.name;
  }
}

引发错误。

虽然:

Template.page.helpers({
  pageName: function() {
    return this.papers;
  }
}

渲染:[object Object],没关系

对象文字也是如此:this.check.done抛出错误,但是this.open呈现&#39; upper&#39;正确。

1 个答案:

答案 0 :(得分:0)

问题是在加载数据之前,this.papers最初是未定义的。当您尝试访问未定义的name属性时收到错误。

只需添加支票即可:

Template.page.helpers({
  pageName: function() {
    return (this.papers) ? this.papers.name || '';
  },
};