Meteor js自定义分页
Meteor js custom pagination
我非常需要支持。我已经按照 YouTube 教程编写了一个分页,它工作正常,但再次倒退时除外。它只有 2 个按钮,previous
和 next
,当单击下一个按钮时它工作正常但上一个按钮只向后退一次。假设我在集合中有 20 条记录,一次分页显示 5 条,下一个按钮可以转到第四页的末尾,但上一个按钮不会向后退一步。请问我该怎么做才能获得分页体验?只要用户单击,上一个按钮就应该导航到最后一页。
分页按钮事件:
Template.myviews.events({
'click .previous': function () {
if (Session.get('skip') > 5 ) {
Session.set('skip', Session.get('skip') - 5 );
}
},
'click .next': function () {
Session.set('skip', Session.get('skip') + 5 );
}
});
发表:
Meteor.publish('userSchools', function (skipCount) {
check(skipCount, Number);
user = Meteor.users.findOne({ _id: this.userId });
if(user) {
if(user.emails[0].verified) {
return SchoolDb.find({userId: Meteor.userId()}, {limit: 5, skip: skipCount});
} else {
throw new Meteor.Error('Not authorized');
return false;
}
}
});
订阅:
Session.setDefault('skip', 0);
Tracker.autorun(function () {
Meteor.subscribe('userSchools', Session.get('skip'));
});
Blaze 分页按钮:
<ul class="pager">
<li class="previous"><a href="#">Previous</a> </li>
<li class="next"><a href="#">Next</a> </li>
</ul>
模板助手:
RenderSchool: function () {
if(Meteor.userId()) {
if(Meteor.user().emails[0].verified) {
return SchoolDb.find({userId: Meteor.userId()}).fetch().reverse();
} else {
FlowRouter.go('/');
Bert.alert('Please verify your account to proceed', 'success', 'growl-top-right');
}
}
}
您总共有 6 个文档,每页 2 个文档,总共 3 页。
您在 previous
按钮单击处理程序中的 if
条件阻止您转到第一页:
if (Session.get('skip') > 2 /* testing */ ) {
...
}
对于第 2 页 skip
将等于 2
并且在下一次单击时此条件将为 false
,防止返回。
当您在第 3 页时 — 您只能继续第 2 页,给人一种按钮只能工作一次的印象。
应该是这样的:
if (Session.get('skip') > 0 ) {
...
}
我非常需要支持。我已经按照 YouTube 教程编写了一个分页,它工作正常,但再次倒退时除外。它只有 2 个按钮,previous
和 next
,当单击下一个按钮时它工作正常但上一个按钮只向后退一次。假设我在集合中有 20 条记录,一次分页显示 5 条,下一个按钮可以转到第四页的末尾,但上一个按钮不会向后退一步。请问我该怎么做才能获得分页体验?只要用户单击,上一个按钮就应该导航到最后一页。
分页按钮事件:
Template.myviews.events({
'click .previous': function () {
if (Session.get('skip') > 5 ) {
Session.set('skip', Session.get('skip') - 5 );
}
},
'click .next': function () {
Session.set('skip', Session.get('skip') + 5 );
}
});
发表:
Meteor.publish('userSchools', function (skipCount) {
check(skipCount, Number);
user = Meteor.users.findOne({ _id: this.userId });
if(user) {
if(user.emails[0].verified) {
return SchoolDb.find({userId: Meteor.userId()}, {limit: 5, skip: skipCount});
} else {
throw new Meteor.Error('Not authorized');
return false;
}
}
});
订阅:
Session.setDefault('skip', 0);
Tracker.autorun(function () {
Meteor.subscribe('userSchools', Session.get('skip'));
});
Blaze 分页按钮:
<ul class="pager">
<li class="previous"><a href="#">Previous</a> </li>
<li class="next"><a href="#">Next</a> </li>
</ul>
模板助手:
RenderSchool: function () {
if(Meteor.userId()) {
if(Meteor.user().emails[0].verified) {
return SchoolDb.find({userId: Meteor.userId()}).fetch().reverse();
} else {
FlowRouter.go('/');
Bert.alert('Please verify your account to proceed', 'success', 'growl-top-right');
}
}
}
您总共有 6 个文档,每页 2 个文档,总共 3 页。
您在 previous
按钮单击处理程序中的 if
条件阻止您转到第一页:
if (Session.get('skip') > 2 /* testing */ ) {
...
}
对于第 2 页 skip
将等于 2
并且在下一次单击时此条件将为 false
,防止返回。
当您在第 3 页时 — 您只能继续第 2 页,给人一种按钮只能工作一次的印象。
应该是这样的:
if (Session.get('skip') > 0 ) {
...
}