Backbone.js路由和滚动位置

时间:2015-03-02 21:52:48

标签: javascript backbone.js

我正在创建一个非常基本的网站,其中包含一系列项目,您可以点击这些项目,然后查看有关该项目的更多详细信息。

我遇到的问题是,当您向下滚动项目列表,然后转到项目详细信息视图时,它不会将滚动位置重置为顶部。所以你处于新页面的底部,这很烦人。

我对Backbone.js很新 - 有没有人遇到过这个?

1 个答案:

答案 0 :(得分:1)

我在我的项目中发现了同样的问题(有骨干)。使用的解决方案是:

App.Router.on("route", function(data){
  $(document).scrollTop(0);
});

因此,每次调用路由时,在呈现新视图之前,文档页面都会自动返回顶部。我希望可以提供帮助。 记住你需要在一次“绑定”这个,而不是每个视图;)

编辑: 如果在创建新页面时没有“触发”路由,请应用此行

$(document).scrollTop(0);

关于正确的事件:)

EDIT2: 看着你的代码(最后的部分)

var projects = new App.Views.Projects();
var project = new App.Views.Project();

var theRouter = Backbone.Router.extend({
        routes: {
            '': 'home',
            ':id': 'project'
        },

        home: function() {
          projects.render();
        },
        project: function(id) {
          project.render({id: id});
        }
    });

    var router = new theRouter();

    router.on('route', function() {
        // MAKE SURE ROUTING BIND IS CALLED
        console.log("Hey, im routing !!!");
        $(document).scrollTop(0);
    });

    Backbone.history.start();

试试这个