[英]Pass a parameter to a template?
我有一個在不同頁面中調用的模板登錄名:
{{>login}}
該模板是帶有按鈕提交的表單。 當用戶單擊“提交”時,我將轉到以下其他頁面:
Template.login.events({
'click #submit' : function() {
Router.go('player', {_id: username});
}
});
我要做的是能夠根據模板{{> login}}所在的頁面路由到其他頁面。 是否可以不復制模板? 就像將參數傳遞給模板並根據該參數切換事件函數一樣?
是的,可以將參數傳遞給模板:
{{> 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 ...;
}
});
雖然我在文檔中找不到有關它的東西,但這是標准的把手物品。
是的,有可能。
{{> login route='player'}}
然后將您的JavaScript更新為:
Router.go(this.route, /* ... */);
是的,您可以向模板傳遞一個或多個參數,該參數可以設置模板使用的數據上下文。
{{> login route="someRouteName" routeParams=getRouteParameters}}
這會將模板的數據上下文設置為包含兩個屬性的對象: route
和routeParams
(假設有一個名為getRouteParameters
的助手將返回參數對象)。
然后,您可以從模板助手中使用它們,或者在事件處理程序中使用它們(視情況而定)。
Template.login.events({
'click #submit' : function(event, template) {
var routeName = template.data.routeName;
var routeParams = template.data.routeParams;
Router.go(routeName, routeParams);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.