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».


person Mazka    schedule 28.05.2014    source источник


Ответы (1)


Проблема в том, что this.papers изначально не определено, пока данные не будут загружены. Вы получаете сообщение об ошибке при попытке доступа к свойству name неопределенного.

Просто добавьте проверку, и она должна работать:

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