如何使以下模板助手响应式(流星)
How to make the following template helper reactive (Meteor)?
我有Chapters
集合,我在其中一个模板中显示了章节列表:
<template name="chapterItem">
<div class="chapter clearfix {{isCurrentChapter}}">
<div class="chapter-arrows">
<a class="move-up" href="javascript:;"><i class="ion-arrow-up-a"></i></a>
<a class="move-down" href="javascript:;"><i class="ion-arrow-down-a"></i></a>
</div>
<h4><a class="open-chapter" href="javascript:;">{{title}}</a></h4>
<a class="delete-current-chapter" href="javascript:;"><i class="ion-close-circled"></i></a>
</div>
</template>
如您所见,我创建了一个isCurrentChapter
来像这样使用:
// book_page.js
Template.bookPage.events
"click .open-chapter": function() {
localStorage.setItem "currentChapter", this._id
}
// chapter_item.js
Template.chapterItem.helpers({
isCurrentChapter: function() {
var currentChapterId = localStorage.getItem("currentChapter");
var selectedChapterId = this._id;
if selectedChapterId === currentChapterId) {
return "active";
}
}
});
现在的问题是,仅当页面加载时,返回的active
才会更改。
我怎样才能使isCurrentChapter
变得被动?在click .open-chapter
事件上点火?
要使帮助程序成为反应式的,它必须依赖于反应式源。我们可以使用会话。
// book_page.js
Template.bookPage.events({
"click .open-chapter": function() {
Session.set('currentChapter', this._id);
localStorage.setItem("currentChapter", this._id);
}
});
// chapter_item.js
Template.chapterItem.helpers({
isCurrentChapter: function() {
var currentChapterId = Session.get("currentChapter");
var selectedChapterId = this._id;
if (selectedChapterId === currentChapterId) {
return "active";
}
}
});
当会话"当前章节"更改时,帮助程序是当前章节重新运行。
编辑:如果您想在页面加载或刷新时设置活动类,您可以执行以下操作:
var currentChapterId = Session.get("currentChapter") || localStorage.getItem("currentChapter");
尝试从会话中获取当前章节,如果未定义,则从本地存储获取它。或者在代码之上使用 Session.setDefault:
Session.setDefault('currentChapter', localStorage.getItem('currentChapter'));
相关文章:
- 如何使用铁流星与流星的默认路线
- 如何将getJson的响应保存在全局变量中
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 在流星上使用微信js-sdk时出现拒绝权限错误
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 不再使用innerHTML进行AJAX响应.(代码未得到响应)
- 为什么可以't我使用了AJAX响应的一部分
- 流星中DOM的繁殖
- 响应动画手风琴不工作
- 如何从SeleniumWebdriver获取异步Javascript响应
- Ajax调用在Firefox中不会自动响应
- 可以在响应时隐藏iphone上的“播放”按钮以进行视频播放
- 流星和铁路由器中的gzip和minimy服务器路由响应
- 如何使以下模板助手响应式(流星)
- 流星:返回承诺's,然后再响应HTTP发布请求
- 流星:使外部脚本参数响应
- 流星响应式搜索代码未运行
- 流星自动表单自定义验证不响应
- 流星发布+响应式查询对象