0

我需要从我的模板助手访问多个数据源。我设法用 Iron-router 发送了多个数据源。

//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 会正确呈现 'upper'。

4

1 回答 1

0

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

只需添加一个检查,它应该可以工作:

Template.page.helpers({
  pageName: function() {
    return (this.papers) ? this.papers.name || '';
  },
};
于 2014-05-28T11:27:43.647 回答