Meteor有条件地显示嵌套模板

时间:2015-04-01 16:32:24

标签: meteor meteor-blaze

我有一个带有几个子嵌套模板的模板,这些模板应该根据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>

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

你定义了一个字符串数组,我认为这会造成麻烦,所以我建议你改变

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

var templateArray = [false, false];

它会顺利运作