我在使用Meteor(和Handlebars)时将一些随机放置的图像(比如气球)保持在恒定位置时遇到了一些麻烦。
图像使用以下方法正确随机化位置:
Template.main.random = function(from,to) {
return Math.floor(Math.random()*(to-from+1)+from);
},
和html:
{{#each images user.balloons}}
{{#constant}}
<img class="itemimage" src="{{url}}" style="margin-left:{{random 1 200}}px; margin-top:{{random 1 100}}px;">
{{/constant}}
{{/each}}
然而{{#consant}}并不像我希望的那样有效;图像每次更新都会收到新的随机边距,因此它们会在整个节目中跳过!有没有办法阻止他们更新?我错误地使用{{#constant}}吗?
非常感谢任何帮助!这是我的第一个项目,并且进展顺利,所以我热衷于保持势头。
谢谢!
编辑:快速说明,当我尝试在{{#each}}之外移动{{#constant}}时,图片根本没有显示,所以不行。
答案 0 :(得分:0)
不幸的是,正如文档中所述:
常量区域用于嵌入非Meteor内容。事件处理程序和反应依赖项目前在常量区域内无法正常工作。
我建议写一些函数,它产生一个适当大小的随机坐标数组,然后在客户端代码中首先运行它,并将结果存储在一个普通的javascript变量中。然后,只需在您渲染气球的模板中添加一个帮助器,为每个气球提供相关坐标。除非用户进行了大量的刷新,否则应该将它们保留在原位。