Meteor:更改click事件的变量值

时间:2014-09-16 15:29:12

标签: javascript meteor

我只是想为点击的note显示day 以下是我的应用程序的结构:
homePage.html

<template name="homePage">
    <h2>Welcome to home page!</h2>
    {{#each posts}}
        {{> postOnDay}}
    {{/each}}
</template>

postOnDay.html

<template name="postOnDay">
    <a href="#" class="aDay">{{day}}</a>
    <div style="display:{{showPost}}">
        {{note}}    
    </div>
</template>

homePage.js

Template.homePage.helpers({
   posts: function() {
        //alert(Posts.find().count());
        return Posts.find();
    }
});

postOnDay.js

Template.postOnDay.events({
    'click .aDay': function(e) {
        e.preventDefault();
        var link = e.currentTarget;
        showPost: 'inline' //change value on click
    }
});

Template.postOnDay.helpers({
    showPost: 'none' //default value
})

1 个答案:

答案 0 :(得分:1)

如果要更改帮助程序和事件处理程序中的值,则应使用Session:

而不是

     showPost: 'inline' //change value on click
   }
});

Template.postOnDay.helpers({
    showPost: 'none' //default value
})

我愿意:

      Session.set('showPost', 'inline'); //change value on click
    }
});

Template.postOnDay.helpers({
    showPost: function(){ return Session.get('showPost')}
})

对于默认值,请使用:

Session.setDefault('showPost', 'inline')

这可以根据您的需要进行模板或应用程序初始化。

另一件需要考虑的事情是,如果你想要每个帖子变量,你可能需要使用类似的东西:

Session.get('showPost' + this.id)

请务必在控制台中输出this的值,因此您确定this.id在每个帖子中都是唯一的。