Meteor:当页面刷新或其他页面位置时,如何保留dom操作?

时间:2013-08-13 18:33:36

标签: javascript meteor

我有一个无限滚动添加新元素(链接),当我导航到链接并返回浏览器时,我回到结果的第一页而不是由于添加的结果而添加的广泛元素我以前的滚动动作。

2 个答案:

答案 0 :(得分:3)

你做错了!需要以流星的方式去做。

您只需使用Deps.autorun()并更改页码Session.set('currentPage');

,即可在客户端增加文档数量

main.js

//when scrollbar reaches end of page, just change the 'currentPage' session variable to 'grow' the list template
    if ($(window).scrollTop() + $(window).height() == $(document).height()) {
var nowPage = Session.get('pageNumber');
Session.set('pageNumber', parseInt(nowPage) + 1);
e.stopImmediatePropagation();
}

的客户机/ subscription.js

Deps.autorun(function(){
  Meteor.subscribe('huge-list', Session.get('currentPage'); //whenever currentPage changes, so will your subscription if you set up your publish() on the server side;
});

服务器/ publication.js

Meteor.publish('huge-list', function(page){ //when session changes on client, this changes
return Requests.find({}, {limit:page});
});

答案 1 :(得分:1)

唯一的方法是保存滚动状态,然后在Meteor渲染模板后重新应用DOM操作。

例如,像这样:

Template.my_template.rendered = function() {
    $('#my-scrolling-element').scroll(function(e) {scrollPosition = e.target.scrollTop()})

    if(scrollPosition) {
        $('#my-scrolling-element').scrollTo(scrollPosition);
    }
}