2014-03-01 35 views

回答

18

你可能會想使用路由器來照顧路徑,並呈現一定的模板,不同的路徑。鐵路由器包是最好的一個。如果你沒有使用它,我會強烈推薦它。

一旦你使用的是鐵路由器,得到的查詢字符串和URL參數是由非常簡單。你可以看到文檔,這裏的部分:https://github.com/iron-meteor/iron-router/blob/devel/Guide.md#route-parameters

你給的路線會看起來像這樣的例子:

Router.map(function() { 
    this.route('home', { 
    path: '/', 
    template: 'task_app' 
    data: function() { 
     // the data function is an example where this.params is available 

     // we can access params using this.params 
     // see the below paths that would match this route 
     var params = this.params; 

     // we can access query string params using this.params.query 
     var queryStringParams = this.params.query; 

     // query params are added to the 'query' object on this.params. 
     // given a browser path of: '/?task_name=abcd1234 
     // this.params.query.task_name => 'abcd1234' 
     return Tasks.findOne({task_name: this.params.query.task_name}); 

    } 
    }); 
}); 

這將創造條件,使用了「task_app」模板路線與任務名稱匹配的第一個任務的數據上下文。

您可以從模板助手或其他功能使用Router.current()來獲得當前的路線也訪問URL參數和其他路由信息。因此,例如在助手中,您可以使用Router.current().params.query.task_name來獲取當前任務名稱。 Router.current()是一個反應性元素,因此如果它在反應計算中使用,則計算將在對路由進行任何更改時重新運行。

+2

回答應該被接受:) – kylemclaren

+1

現在如何在您的示例中加載模板的事件中訪問該參數。基地你的榜樣,如何訪問this.params.taskname在Template.home.events({}) – JCm

+0

這個答案告訴我們如何訪問查詢參數在router.js文件。正如原始示例所述,它沒有解釋如何訪問Template函數中的查詢參數。 – JoeTidee