У меня есть то, на что я надеюсь, простая проблема.
Скажем, у меня есть объект 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
в массив объектов, является ли это пригодным для использования?
Если у вас есть переменная области видимости:
$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