如何使用Routeprovider切换部分?

时间:2015-07-21 23:40:22

标签: javascript jquery angularjs

我有我希望这是一个简单的问题。

我们说我有一个JSON对象,它是网址/page-b的数据

{
    "name": "Page B",
    "url": "page-b",
    "sections": [{
        "name": "A",
        "description": "Foo",
    }, {
        "name": "B",
        "description": "Bar",
    }, {
        "name": "C",
        "description": "Dog"
    }, {
        "name": "D",
        "description": "Cat",
    }]
}

每个页面都有一个不同的JSON文件,但是对于这个例子,我将在B上运行它。

dashboard.controller('siteCtrl', ['$scope', '$http', '$rootScope', '$location', function($scope, $http, $rootScope, $location) {

  $rootScope.location = $location.path();

  var url = '';
  switch($rootScope.location) {
    case '/':
    case '/page-a':
      url = '/data/page-a.json';
    break;
    case '/page-b':
      url = '/data/page-b.json';
    break;
    case '/page-c':
      url = '/data/page-c.json';
    break;
  }

  $http.get(url).success(function(data){ 
    $scope.brandData = data;
  });

}]);

简单路由提供程序,它从哈希键中获取页面。我有这个简单的菜单,我根本无法控制html,但是我想在json对象中切换SECTIONS,而不是全部显示它们,在page-b根页面上有一个click事件,但我不确定如何找出点击了哪个子链接。

<ul>
    <li><a href="/#/page-b" class="bg-binding">Page B</a>
        <ul>
            <li><a href="#" class="bg-binding">A</a></li>
            <li><a href="#" class="bg-binding">B</a></li>
            <li><a href="#" class="bg-binding">C</a></li>
            <li><a href="#" class="bg-binding">D</a></li>
        </ul>
    </li>
</ul>

我只想切换点击子菜单元素的部分。这个代码提供了吗?

我注意到Angular将$$hashkey推送到对象数组中,这可用吗?

1 个答案:

答案 0 :(得分:0)

如果你有一个范围变量,如:

$scope.activeSection ='A';

您可以将此值用作ng-repeat的过滤条件,并使用ng-click在菜单中进行更改。也可以在ng-class中使用它来设置菜单中的活动类

<a ng-click="activeSection='A'" ng-class="{active: activeSection=='A'}">A</a>

<div ng-repeat="section in data.sections |filter: {'name': activeSection}">
   Name:{{section.name}}<br>
   Description: {{section.description}}
</div>

就角度hashkeys而言,你最好只是忽略它们。请使用记录的api