2014-06-13 123 views
0

我有一個參與者正在此模板渲染參數:流星車把模板如何EVAL

<template name="participant"> 
    <div class="animated fadeIn"> 
     <a href="{{pathFor 'participants'}}">← Back</a> 
     {{#with participant}} 
     <div class="participant"> 
      <h3>{{fullname}}</h3> 
      <dl> 
       <dt>E-mail</dt> 
       <dd>{{email}}</dd> 
       <dt>Phone</dt> 
       <dd>{{tel}}</dd> 
       <dt>City</dt> 
       <dd>{{zip}} {{city}}</dd> 
       <dt>Creation time</dt> 
       <dd>added {{created_on}}</dd> 

      </dl> 
      {{>quickfield name="email" value=email}} 
      <p>&nbsp;</p> 
      <h5><a href="#" class="delete">Delete</a></h5> 
     </div> 
     {{/with}} 
    </div> 
</template> 

哪裏Quickfield模板是:

<template name="quickfield"> 
    <input id="{{name}}" value="{{value}}" class="bound"> 
</template> 

我想跳過第二個參數,稱爲「值「,因爲它與名稱參數相同。我們應該只能用一個參數來構建模板。

理想情況下,我應該有這樣的:

{{>quickfield name="email"}} 
<template name="quickfield"> 
    <input id="{{name}}" value="{{eval('this.' + name)}}" class="bound"> 
</template> 

但是,這並不工作。我能怎麼做?

Thks!

+0

我不太明白的問題。爲什麼你不能只用'id =「{{name}}」value =「{{name}}」'? –

+0

,因爲名稱是字符串「email」,值應該是參與者「[email protected]」的電子郵件地址。 – ndemoreau

+0

現在明白了。是的,Spacebars在他們的理解上相當有限,但是幸運的是,你可以通過合適的幫手完成任何事情。請參閱下面的答案。 –

回答

0

創建一個額外的幫手:

UI.registerHelper('get', function(name) { 
    return this[name]; 
}); 

現在你可以重寫你的模板:

<template name="quickfield"> 
    <input id="{{name}}" value="{{get name}}" class="bound"> 
</template> 
+0

請注意,我不確定這是100%究竟是如何得到'幫助應該看起來像,但沿着這些線會做些什麼。 –

+0

感謝您的輸入。它朝着正確的方向發展,但仍然無法正常工作。我知道爲什麼,但我不知道如何解決它......實際上,當我將name參數添加到模板調用時,它似乎失去了上下文(這成爲整個窗口)。我一直在尋找一段時間,但我不明白爲什麼會這樣。 – ndemoreau