2014-09-07 225 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); 
    } 
});