【发布时间】:2012-02-19 17:08:24
【问题描述】:
我正在使用 sammy.js 框架构建一个网站。我有一个不变的侧边栏,以及在 sammy 的帮助下加载不同页面的主要内容视图。在侧栏上,我有新闻文章的链接。目前,侧边栏上的任何文章链接都只加载 #/news 路由。但我希望它加载路线并向下滚动到文章。一旦加载路由以向下滚动到文章,我尝试使用锚链接触发器,但我在 sammy 应用程序中遇到错误。关于如何实现这一点的任何想法?
【问题讨论】:
我正在使用 sammy.js 框架构建一个网站。我有一个不变的侧边栏,以及在 sammy 的帮助下加载不同页面的主要内容视图。在侧栏上,我有新闻文章的链接。目前,侧边栏上的任何文章链接都只加载 #/news 路由。但我希望它加载路线并向下滚动到文章。一旦加载路由以向下滚动到文章,我尝试使用锚链接触发器,但我在 sammy 应用程序中遇到错误。关于如何实现这一点的任何想法?
【问题讨论】:
似乎是一个老问题,但因为它仍然没有答案......
您必须将您的 URL 定义为正则表达式,并在其末尾允许一个可选的书签哈希:
get(/#\/news(#.+)?/, function() {
var articleId = this.params['splat'];
});
这将匹配以下任何路线:
然后您应该能够使用 articleId 找到匹配的元素并手动滚动。例如在上面的最后一条路线中,'articleId' 将是 '#my-news-article',因此使用 jQuery 你可以执行以下操作:
var $article = $(articleId);
$(document.body).animate({ scrollTop: $article.offset().top });
});
希望对您有所帮助。
【讨论】: