2014-09-07 214 views
1

我有一個名爲在不同的頁面模板與登錄:將參數傳遞給模板?

{{>login}} 

這個模板是一個按鈕提交表單。當用戶點擊提交,我的路由到其它頁面是這樣的:

Template.login.events({ 

    'click #submit' : function() { 

    Router.go('player', {_id: username}); 
} 
}); 

我想要做的是能夠路由根據頁面在模板{{>登錄}}是不同的頁面。沒有重複模板可能嗎?就像有一個參數傳遞給模板並根據這個參數切換事件函數?

回答

0

是的,這是可能的一個參數傳遞到模板:

{{> login parameter="value"}} 

這是如何在事件處理程序訪問它:

Template.login.events({ 
    "click #submit":function(event,template){ 
    // this is important if you want to avoid page reload 
    event.preventDefault(); 
    switch(this.parameter){ 
     // ... 
    } 
    } 
}); 

的參數也可以是一個幫手:

{{> login helper}} 

Template.login.helpers({ 
    helper:function(){ 
    return ...; 
    } 
}); 

我無法找到關於它的文檔,雖然,但它是標準的車把東西。

+0

供參考:https://github.com/meteor/meteor/blob/devel/packages/spacebars/README.md#inclusion-and-block-arguments –

0

是的,這是可能的。

{{> login route='player'}} 

然後更新您的javascript來:

Router.go(this.route, /* ... */); 
0

是的,你可以傳遞一個參數,或幾個,到可以設置模板使用的數據上下文的模板。

{{> login route="someRouteName" routeParams=getRouteParameters}} 

這將模板的數據上下文設置爲包含兩個屬性的對象:routerouteParams(假設有一個名爲getRouteParameters助手,將返回的參數對象)。

然後,您可以使用這些來自模板助手,或在您的情況下,從您的事件處理程序。

Template.login.events({ 
    'click #submit' : function(event, template) { 
    var routeName = template.data.routeName; 
    var routeParams = template.data.routeParams; 

    Router.go(routeName, routeParams); 
    } 
});