2015-04-01 43 views
1

我有一個模板有幾個子嵌套模板,應該有條件地顯示基於保存在TemplateC集合中的數據,如下所示,所以我使用if條件在我的模板中,如下所示,但我總是即使條件返回true或false,也會顯示所有子模板。有人可以檢查我的代碼,並告訴我我在這裏失蹤了什麼?由於流星有條件地顯示嵌套模板

 var templateArray = ['false', 'false']; 

     Template.formBuilderPreview.created = function() { 

      var cursor = TemplatesC.find({}, { sort: { templateCode: 1 }});  
      if (!cursor.count()) return; 

      cursor.forEach(function (row) { 
       //only case 1 return in the switch below as case 2 never exist 
       switch(row.templateCode) { 
        case 1: templateArray[0] = true; break; 
        case 2: templateArray[1] = true; break; 
        default: templateArray[0] = true; 
       } 

      }); 
     }; 


     Template.formBuilderPreview.helpers({ 

      template1box: function(){  
       console.log(templateArray[0]); //This returns true 
       return templateArray[0]; 
      }, 
      template2box: function(){  
       console.log(templateArray[1]); //This returns false 
       return templateArray[1]; 
      } 

     }); 

模板:

<template name="formBuilderPreview"> 

     <div id="fullpage"> 
      {{#if template1box}}     
       {{> temp01}} 
      {{/if}} 

      {{#if template2box}}       
       {{> temp02}} 
      {{/if}}    
     </div> 

    </template> 

回答

1

你定義字符串數組,我相信這是造成麻煩,所以我建議你換

var templateArray = ['false', 'false']; 

var templateArray = [false, false]; 

,它會工作順利

+0

非常感謝,它現在的作品! – MChan 2015-04-01 22:25:05

1

把那個助手在一起。

Template.formBuilderPreview.helpers({ 
    template1box: function(){  
     if(templateArray[1]){ 
      return true; 
      }else{ 
      return false; 
      } 
     }); 

現在模板應該看起來像這樣。

<template name="formBuilderPreview"> 
    {{#if template1box}} 
    <!-- If helper return TRUE this temp01 will be showed. -->    
      {{> temp01}} 
     {{else}} 
    <!-- If helper return FALSE this temp01 will be showed. --> 
      {{> temp02}} 
     {{/if}} 
</template> 

你得到幫助者的想法,使它只在1個幫手上,退出true/false

+0

感謝Ethaan爲你的幫助,但如果我將有兩個以上的子模板,這將是不實際的 – MChan 2015-04-01 22:24:30