2017-04-26 4 views
0

ドロップダウンから選択した後、フォーム上の領域にテンプレートをレンダリングしようとしています。私の貧弱な試みは以下ですが、テンプレートの文字列を追加するだけです。メテオ:オプションが選択された後にフォーム上の領域にテンプレートをレンダリングする

example.html

<div class="row"> 
    <div class="col s12 m6"> 
     <label for="certCov">Enter Coverage Information</label> 
     <select class="error browser-default" id="certCov" required name="certCove"> 
      <option value="" disabled selected>Select Coverage</option> 
      {{#each getCoverageType}} 
      <option value="{{this.key}}">{{this.value}}</option> 
      {{/each}} 
     </select> 
    </div> 
</div> 
<div class="row"> 
    <div class="col s6"> 
     <label for="startDate">Enter Start Date</label> 
     <input id="startDate" type="date" class="datepicker"> 
    </div> 
    <div class="col s6"> 
     <label for="expiryDate">Enter Expiration Date</label> 
     <input id="expiryDate" type="date" class="datepicker"> 
    </div> 
</div> 

<div id="selectedCov"> 
    {{>!template will be rendered here!}} 
</div> 

example.js

"change #certCo": function (event) { 
    event.preventDefault(); 
    let selectedCov = $(event.target).val(); 
    if (selectedCov == "autoLiability") { 
     $("#selectedCov").append('{{>autoLiability}}'); 
    } else if (selectedCov == "evidProp") { 
     $("#selectedCov").append("{{>epc}}"); 
    } else if (selectedCov == "umbrella") { 
     $("#selectedCov").append("{{>umbrella}}"); 
    } else if (selectedCov == "genLiability") { 
     $("#selectedCov").append("{{>genLiability}}"); 
    } else if (selectedCov == "workComp") { 
     $("#selectedCov").append("{{>workComp}}"); 
    } else { 
    } 
    } 

答えて

0

レンダリングするテンプレートを選択しTemplate-dynamicを使用することによって、これを達成するための最良の方法:

例。 html

<template name="coverageInformation"> 
    <div class="row"> 
     <div class="col s12 m6"> 
      <label for="certCov">Enter Coverage Information</label> 
      <select class="error browser-default" id="certCov" required name="certCove"> 
       <option value="" disabled selected>Select Coverage</option> 
       {{#each coverageTypes}} 
       <option value="{{this}}">{{this}}</option> 
       {{/each}} 
      </select> 
     </div> 
    </div> 

    <div id="selectedCov"> 
     {{> coverageDetail selectedCov=selectedCov}} 
    </div> 
</template> 

<template name="autoLiability"> <h3> autoLiability </h3> </template> 
<template name="evidProp"> <h3> evidProp </h3> </template> 
<template name="umbrella"> <h3> umbrella </h3> </template> 
<template name="genLiability"> <h3> genLiability </h3> </template> 
<template name="workComp"> <h3> workComp </h3> </template> 

<template name="coverageDetail"> 
    <h1> {{selectedCov}} </h1> 
    {{> Template.dynamic template=selectedCov}} 
</template> 

example.js

Template.coverageInformation.onCreated(function helloOnCreated() { 
    // counter starts at 0 
    this.selectedCoverage = new ReactiveVar(''); 
}); 

Template.coverageInformation.helpers({ 
    selectedCov() { 
    return Template.instance().selectedCoverage.get(); 
    }, 
    coverageTypes(){ return [ 'autoLiability', 
          'evidProp', 
          'umbrella', 
          'genLiability', 
          'workComp' 
          ]; 
    }, 
}); 

Template.coverageInformation.events({ 
    'change #certCov'(event, instance) { 
    instance.selectedCoverage.set(event.target.value); 
    }, 
}); 
関連する問題