【发布时间】:2018-05-12 16:52:39
【问题描述】:
我正在创建一个流星页面,其中列出了位于 mongo 数据库中的一系列图像,例如:
<div class="container">
<header>
<h3>List of Uploaded Images</h3>
</header>
<table align="center" style="width:100%">
<tr>
<th> Timestamp </th>
<th> Public URL </th>
<th> QR Code</th>
<th> Session ID </th>
<th> Filename </th>
</tr>
{{#each getImages}}
{{> image}}
{{/each}}
</table>
</div>
</body>
<template name="image">
<tr>
<td align="center"> {{ displayDate createdAt }} </td>
<td align="center"> {{ publicUrl }} </td>
<td align="center"><canvas id="qrcode"></canvas></td>
<td align="center"> {{ sessionId }} </td>
<td align="center"> {{ fileName }} </td>
</tr>
</template>
我还有一个用于图像模板的onRendered 辅助函数:
Template.image.onRendered(function() {
$('#qrcode').qrcode({
size: 128,
text: "https://storage.googleapis.com/my-bucket/my-image-name.jpg"
});
});
这很好用,因为它会呈现一个 QR 码,将 URL 编码为我的存储桶上的单个图像。
我的问题是:如何更改此模板和帮助程序,以便为模板的 每个 实例创建一个唯一的二维码来编码变量 publicUrl ?
理想情况下,我会将助手更改为:
Template.image.onRendered(function(myUrl) {
$('#qrcode').qrcode({
size: 128,
text: myUrl
});
});
然后我可以从模板中将参数publicUrl 传递给它。
感谢您的帮助!
【问题讨论】:
-
目前您正在通过 jquery 设置 qrcode 参数(大小和文本)。也可以通过html完成吗?例如。
<canvas id="qrcode" size=128 text="someurl"></canvas>另外,能否请您发布当前图像模板的助手? -
使用
#qrcode作为选择器将一次选择所有您的画布。最好为每个画布使用唯一的 ID。text选项应该按照 qrdocde 文档和示例工作。 -
似乎二维码仅由传递给选项的文本生成,而不是作为参数设置的文本......如果我像上面那样做,那么所有二维码都解码为默认值“没有文字”
标签: javascript templates meteor qr-code meteor-blaze