2014-11-01 85 views
2

我剛更新到流星1.0和最新版本的鐵路由器。爲什麼我無法將數據傳遞給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()'的結果並記錄結果。 – 2014-11-02 05:52:09

+0

可能的重複: http://stackoverflow.com/questions/30824800/meteor-data-passed-to-template-from-iron-router-is-empty-at-first-load – 2015-06-14 11:40:33

回答

-1

在您的數據功能中,您正在訪問this.params.section。但是,this是指您當前的範圍,這不是路線,因此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 section]中的this.params來訪問路由參數(http://iron-meteor.github.io/iron-router/#route-parameters)。 – n4tiv3pwnst4r 2015-08-13 02:32:20

+0

你的例子是不同的,因爲你試圖在一個新的作用域中訪問'this'的params'屬性,你的lambda函數的作用域被分配給'data'屬性。在該函數之外,在父範圍內,'this.params'可以正常工作。 – 2015-08-23 18:52:54

相關問題