2016-03-13 75 views
0

我必須通過這個模板生成的下拉列表中選擇流星負荷模板,位於ranvas.html在下拉列表中選擇

<template name="shape-dropdown"> 
    <select id = "shape-select"> 
     <option value = "none">select a shape</option> 
     {{#each shape in shapes}} 
      <option value = "{{this}}"> {{this}} </option> 
     {{/each}} 
    </select> 
</template> 

從一個幫手ranvas.js得到形狀名稱:

Template.shape-dropdown.helpers({ 
     shapes: [ 
      { shapetype: "random line"}, 
      { shapetype: "random quadratic curve"}, 
      { shapetype: "random bezier curve"}, 
      { shapetype: "random arc"}, 
      { shapetype: "random stroke triangle"}, 
      { shapetype: "random fill triangle"}, 
      { shapetype: "random stroke rectangle"}, 
      { shapetype: "random fill rectangle"} 
      { shapetype: "random stroke circle"}, 
      { shapetype: "random fill circle"}, 
     ] 
    }); 

當選擇其中一種形狀時,我想要加載一個位於shape-templates.html中的模板。 例如,當「隨機行」選項被選中,我想這個模板加載:

<template name="rand_line"> 
    <label>x1: <input type="text"> - <input type="text"></label> 
    <label>y1: <input type="text"> - <input type="text"></label> 
    <label>x2: <input type="text"> - <input type="text"></label> 
    <label>y2: <input type="text"> - <input type="text"></label> 
    {{> rand_strokeStyle}} 
</template> 
+0

您可以使用[Dynamic](https://www.discovermeteor.com/blog/blaze-dynamic-template-includes/)模板助手和一個從下拉的change事件處理程序中設置的反應變量。 – MasterAM

+0

您使用鐵路路由器嗎? – StefanL19

+0

@ StefanL19不,我不是 – noaoh

回答

0

你要使用dynamic templates

{{> Template.dynamic template="rand_line"}} 

如果您延長.shape-dropdown.helpers可以跟蹤1:1爲每個形狀相匹配的模板,例如:

Template.shape-dropdown.helpers({ 
    shapes: [ 
    { shapetype: "random line", template: "rand_line"}, 
    ... 
    ] 
}); 

你需要一個事件處理程序來追蹤選擇:

Template.shape-dropdown.events({ 
    'change #shape-select": function(ev){ 
    var tpl = shapes.filter(function (obj) { 
    return obj.shape === $('#shape-select').val(); 
    })[0].template; 
    Session.set('template',tpl) 
    } 
}); 

當然你仍然需要一個幫手來獲取該會話變量的值到你的blaze模板中作爲動態助手的參數。

+0

如何根據選項獲取模板更改?我會使用'{{#let}}'並且有一個指向助手模板對象的變量嗎? – noaoh

+0

您需要事件處理程序來更新Session變量或反應性變量,並讓動態模板指向該變量。我會擴大答案。 –