在Meteor中,如何仅在模板的一个实例上更新属性?

如果我在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();
    }
});

我已编辑它,因此默认情况下隐藏错误,并通过动画向下滑动

点赞