使用自定义名称构建面包屑

时间:2015-08-17 13:29:11

标签: javascript angularjs ngroute angularjs-ng-route

我正在尝试为我正在编码的网络应用程序制作自己的面包屑服务。唯一的问题是我想要为面包屑设置自定义名称,因为它们的名称不会出现在路径中。我的一个想法就是将所有<a ng-href="/home">替换为<a ng-click="goTo('/home', 'Home')">,例如。

我害怕的一件事是浏览器的后退按钮。它搞砸了,我试图想一个可能的解决方案与一个$ routeChangeSuccess的监听器。我的服务目前看起来像这样(这有点乱):

portalServices.factory('breadcrumbsService', ['$rootScope', '$location', function($rootScope, $location) {

var breadcrumbs = [];

var update = function(name, path) {

    $location.path(path);

    for (var index = 0; index < breadcrumbs.length; index++) {
        if (breadcrumbs[index].path == path) {
            breadcrumbs = breadcrumbs.splice(index + 1);
            break;
        };
    };

    breadcrumbs.push({name: name, path: path});
};


return breadcrumbs;

我计划让任何控制器具有允许更改路由以实现服务的按钮,并使用ng-clicks来执行路由而不是href。我也愿意接受更好解决方案的建议。

编辑:修正了一个新手错误:P

1 个答案:

答案 0 :(得分:2)

您的功能不起作用,因为您在for循环中定义了var index=0。但你错误地在所有地方迭代i而不是索引。你的代码应该是

for (var i = 0; i < breadcrumbs.length; i++) {
        if (breadcrumbs[index].path == path) {
            breadcrumbs = breadcrumbs.splice(index + 1);
            break;
        };
    };