テンプレートにインライン SVG アイコンを挿入するテンプレート ヘルパーを作成しています。引数を渡して追加の CSS クラス (デフォルトのサイズ、色などを変更するために使用されます) を追加したいと考えています。
私が期待すること
<button>
<svg viewBox="0 0 78 73" class="svg-icon svgWhite" version="1.1" ...>
<polygon id="icon-star" points="39 ... 60">
</polygon>
</svg>
</button>
私が得るもの
<button>
"[object Object]"
<svg viewBox="0 0 78 73" class="svg-icon" version="1.1" ...>
<polygon id="icon-star" points="39 ... 60">
</polygon>
<!--[object Object]-->
</svg>
</button>
マイ テンプレート
<template name="whatever">
<button>{{{icon.star svgWhite}}}</button>
</template>
マイ テンプレート ヘルパー
Template.registerHelper('icon', {
star: function (userClass, userWrapper) {
var wrapper = (userWrapper == undefined) ? "i" : userWrapper;
var addlClass = (userClass == undefined) ? "" : ", " + userClass;
var svgWidth = 78;
var svgHeight = 73;
var svgCode = '<polygon id="icon-star" points="39 .... 60"></polygon>';
var icon = '<'+wrapper+'>' +
'<svg viewBox="0 0 ' + svgWidth + ' ' + svgHeight + '" ' +
'class="svg-icon' + addlClass + '" ' +
svgConfig + '>' + svgCode + '</' + wrapper + '>';
return icon
}
});
参考:https ://github.com/meteor/meteor/tree/devel/packages/spacebars#helper-arguments