Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 根据当时的URL在主干历史记录中返回到特定点?_Backbone.js - Fatal编程技术网

Backbone.js 根据当时的URL在主干历史记录中返回到特定点?

Backbone.js 根据当时的URL在主干历史记录中返回到特定点?,backbone.js,Backbone.js,我有这样的路线: 类别/关键字/id 用户可以这样导航: 类别/科学/42 类别/科学/13 类别/科学/39 类别/出版/38 类别/出版/91 类别/出版/3 在历史中前后移动的工作方式与它应该的工作方式完全相同,但是我想实现一个后退按钮,将用户带回上一个类别。因此,如果用户位于上面的最后一条路径(/publishing/3)并单击该按钮,我想将用户发送回/science/39 有没有一种方法可以使用Backbone.history根据当时的URL返回到特定点?这里最简单的解决方案可能是按照

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

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

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


有没有一种方法可以使用Backbone.history根据当时的URL返回到特定点?

这里最简单的解决方案可能是按照这里的建议自己存储历史记录。Backbone.history实际上不可查询历史记录内容:

导航到最后一条匹配路线的功能,没有与链接答案中定义的历史相同的“类别”:

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;
}

你没有指定当用户没有导航到其他类别时,你希望应用程序如何反应,所以我的回答中没有包括这一点

你如何存储出版属于科学这一事实?它们是两个完全独立的类别,但我的应用程序中的项目可以同时分为多个类别。