2014-11-01 2 views
2

Я только что обновился до Meteor 1.0 и последней версии Iron-Router.Почему я не могу передать данные в шаблон маршрута Iron-Router?

По какой-либо причине, когда я передаю данные шаблону, который включает только один документ, он работает. Но когда я пытаюсь передать несколько документов в шаблон, я получаю пустой экран.

//galleryRoute.js 

Router.route('/:section', function() { 
    this.layout('Gallery', { 
     data: function() { 
      var data = { photos: photos.find({ path: { $regex: '/'+this.params.section +'/' } }) }; 
      return data; 
     } 
    }); 
}); 

<template name="Gallery"> 
    <div class="container"> 
     {{#each photos}}  
      <div class="section-photo" style="background:url({{path}}) no-repeat center center; width:175px; height:175px; background-size:cover;"></div> 
     {{/each}} 
    </div> 
</template> 

Хотите знать, если у кого есть какие-либо идеи о том, почему это было бы?

+0

Является ли ваш '.find()' возвращающим что-нибудь? Попробуйте получить результаты вашего '.find()' и протоколирования результатов. –

+0

Возможный дубликат: http://stackoverflow.com/questions/30824800/meteor-data-passed-to-template-from-iron-router-is-empty-at-first-load –

ответ

-1

В вашей функции данных вы получаете доступ к this.params.section. Однако относится к вашей текущей области действия, которая не является маршрутом, поэтому this.params будет неопределенным. Попробуйте сделать что-то вроде этого:

//galleryRoute.js 

Router.route('/:section', function() { 
    var route = this; 
    this.layout('Gallery', { 
     data: function() { 
      var data = { photos: photos.find({ path: { $regex: '/'+route.params.section +'/' } }) }; 
      return data; 
     } 
    }); 
}); 
+0

Документация на Iron Router явно говорит, что вы должны получить доступ к параметрам маршрута, ссылаясь на 'this.params' в [этом разделе] (http://iron-meteor.github.io/iron-router/#route-parameters). – n4tiv3pwnst4r

+0

Ваш пример отличается, потому что вы пытаетесь получить доступ к свойству 'params'' this' в новой области, области вашей лямбда-функции, присвоенной свойству 'data'. Вне этой функции в родительской области 'this.params' будет работать нормально. –

 Смежные вопросы

  • Нет связанных вопросов^_^