Как использовать Routeprovider для переключения разделов?

0

У меня есть то, на что я надеюсь, простая проблема.

Скажем, у меня есть объект JSON, который является данными для url /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, вместо того, чтобы отображать их все, есть событие щелчка на корневой странице страницы-b, но я Я не знаю, как я могу узнать, какая дочерняя ссылка была нажата.

<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

Если у вас есть переменная области видимости:

$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>

Что касается угловых хэш-ключей, вам лучше всего их игнорировать. Вместо этого используйте документированный api

  • 0
    Извините, я сказал, что не могу контролировать HTML
  • 0
    да? что это обозначает? Как ты это делаешь?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню