在面包屑中显示当前类别名称(使用angularJS)

时间:2015-05-26 12:59:45

标签: javascript angularjs breadcrumbs

我很难在面包屑上看到我的类别和供应商名称。 我正在使用ng-breadcrumbs模块(https://github.com/ianwalter/ng-breadcrumbs)。

我想我在使curCategory和curVendor全局无法访问时遇到问题,但尝试了一些方法并且无法使其正常工作。

这是我的HTML:

<body ng-controller="mainController as main">
(...)
<ol class="breadcrumb">
 <li ng-repeat="breadcrumb in breadcrumbs.get({'Category':curCategory,'Vendor': curVendor}) track by breadcrumb.path" ng-class="{ active: $last }">
  <a ng-if="!$last" ng-href="#{{ breadcrumb.path }}" ng-bind="breadcrumb.label" class="margin-right-xs"></a>
  <span ng-if="$last" ng-bind="breadcrumb.label"></span>
 </li>
</ol>

我的路线:

app.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
      when('/', {
        templateUrl: 'templates/pages/main.html',
        label: 'Home'
      }).
      when('/:cat', {
        templateUrl: 'templates/pages/category.html',
        label: 'Category'
      }).
      when('/:cat/:ven', {
        templateUrl: 'templates/pages/vendor.html',
        label: 'Vendor'
      }).
      otherwise({
        redirectTo: '/'
      });
  }]);

我的控制器:

var app = angular.module("myApp", [
  'ngRoute', 
  'ng-breadcrumbs'
]);

app.controller('mainController', function($scope, $routeParams, breadcrumbs) {

  $scope.breadcrumbs = breadcrumbs;

  $scope.curCategory = $routeParams.cat;
  $scope.curVendor = $routeParams.ven;

  (...)

});

1 个答案:

答案 0 :(得分:0)

我发现错了!

令我感到惊讶的是,在特定的控制器内部工作正常,但是当我将它移动到mainController时,它从$ routeParams返回了空对象。

这是解决方案:

$scope.$on('$routeChangeSuccess', function() {
  $scope.curCategory = $routeParams.cat;
  $scope.curVendor = $routeParams.ven;
});

它只是在填充$ routeParams之前分配了变量。