簡體   English   中英

將參數傳遞給模板?

[英]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}}

這會將模板的數據上下文設置為包含兩個屬性的對象: routerouteParams (假設有一個名為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM