根据当时的网址返回Backbone历史记录中的特定点?

时间:2015-07-08 10:56:24

标签: backbone.js

我有这样的路线:
类别/关键字/ ID

用户可以这样导航:
类别/科学/ 42
类别/科学/ 13
类别/科学/ 39
类别/出版/ 38
类别/出版/ 91
category / publishing / 3

在历史中前后移动的工作方式与它应该完全相同,但我想实现一个后退按钮,将用户带回到上一个类别。因此,如果用户位于上面的最后一个路径(/ publishing / 3)并单击该按钮,我想将用户发送回/ science / 39。

有没有办法使用Backbone.history根据当时的URL返回特定点?

1 个答案:

答案 0 :(得分:1)

这里最简单的解决方案可能是按照此处的建议自行存储历史记录。 Backbone.history对于历史记录内容来说并不真正可以使用: Get previous router/url in backbone application

导航到最后匹配路线的功能没有相同的“类别”,其历史记录定义为链接的答案:

function getCategory(fragment) {
    return fragment.split("/")[1];
}

function goBackToLastMatchingRouteOfOtherCategory() {
    var reversedHistory = history.reverse();
    var currentCategory = getCategory(Backbone.history.getFragment());
    for (var historyIndex in reversedHistory) {
        var historyFragment = reversedHistory[historyIndex].fragment;
        if (getCategory(historyFragment) !== currentCategory) {
            router.navigate(historyFragment, {trigger: true});
            return true;
        }
    } 
    # No matching route with other category found in history
    return false;
}

当用户未导航到其他类别时,您未指定应用程序的响应方式,因此我在答案中未将其包括在内。