如果我在Meteor中有一个{{#each}}绑定,我想在#each中只在一个模板实例上更新一个属性.我该怎么办?我已经尝试在事件映射中的“模板”对象上设置一个值,但这似乎不是被动的.我也试过绑定到Session属性,但这会导致每个实例更新而不仅仅是我想要的…
例如:
{{#each dates}}
{{> dateTemplate}}
{{/each}}
<template name="dateTemplate">
{{date}}
<span style="color: red;">{{errorMsg}}</span> <--- how do i update errorMsg?
</template>
Template.dateTemplate.events({
'click': function(event, template) {
template.errorMsg = 'not valid'; <--- this doesn't do anything
}
});
编辑解答下面的答案:
Template.dateTemplate.events({
'click': function(event, template) {
template.errorMsg = function() { return 'not valid';} <--- this also doesn't do anything
}
});
最佳答案 您不必为此使用把手,因为它不需要反应性来传递消息,反应变量最适合数据库数据,或者由其他客户端通过无线更新的数据.
你可以使用JQuery(默认包含)来更新它,它也可以有点发烧友:
<template name="dateTemplate">
{{date}}
<span style="color: red;display: none" class="errorMessage"></span>
</template>
Template.dateTemplate.events({
'click': function(event, template) {
$(template.find('.errorMessage')).html('Your Error Message').slideDown();
}
});
我已编辑它,因此默认情况下隐藏错误,并通过动画向下滑动