我有一个简单的图像列表和一个按钮,每当单击它时,我都会使用它来更改这些图像的大小。我以多种方式实现了这种行为,并且存在显着的性能和行为(模板重新渲染)差异。我的问题是在 Meteor 中实现这一点的首选方法是什么?
这是一个最小的工作示例。实际上,可以更好地识别图像,并且可以从不同的事件触发尺寸变化。
解决方案1(演示方式=慢/重新渲染):
Template.controls.events = {
"click #change_size": function() {
Session.set("height", "20px");
}
};
<template name="image">
<img src="img.jpg" style="height: {{height}}"/>
</template>
Template.image.height = function() {
return Session.get("height");
};
解决方案 2(jQuery + 状态):
Template.controls.events = {
"click #change_size": function() {
Session.set("height", "20px");
}
};
<template name="image">
<img src="img.jpg"/>
</template>
Meteor.autorun(function() {
$("img").css({height: Session.get("height")});
})
解决方案 3(jQuery):
Template.controls.events = {
"click #change_size": function() {
$("img").css({height: "20px"});
}
};
<template name="image">
<img src="img.jpg"/>
</template>
解决方案 4(反应式父级):
Template.controls.events = {
"click #change_size": function() {
Session.set("height", "20px");
}
};
<template name="image_set">
{{#each image_set}}
<img src="img.jpg" style="height: {{../height}}"/>
{{/each}}
</template>
Template.image_set.height = function() {
return Session.get("height");
};
解决方案5:???