Совершенно новый для нас угловатый, так голый со мной. Я знаю основное использование ng-repeat
и я могу легко сгенерировать список.
<ul> <li ng-repeat="presentation in presentations"> {{presentation.title}} </li> </ul>
У меня есть массив, который возвращается из PHP:
presentations = Array ( [0] => stdClass Object ( [collection] => Collection A [title] => Title 1a ) [1] => stdClass Object ( [collection] => Collection A [title] => Title 2a ) [2] => stdClass Object ( [collection] => Collection B [title] => Title 1b ) [3] => stdClass Object ( [collection] => Collection B [title] => Title 2b ) [4] => stdClass Object ( [collection] => Collection C [title] => Title 1c ) [5] => stdClass Object ( [collection] => Collection C [title] => Title 2c ) [6] => stdClass Object ( [collection] => Collection C [title] => Title 3c ) )
Вы заметите, что каждый объект имеет collection
.
Мне нужно создать представление заголовка для каждой коллекции. Мне нужно, чтобы он отображался, как показано ниже:
COLLECTION A - Title 1a - Title 2a COLLECTION B - Title 1b - Title 2b COLLECTION C - Title 1c - Title 2c - Title 3c
Только заголовки будут доступны для просмотра. Возможно ли это с помощью ng-repeat
? Я знаю, что могу сортировать каждую коллекцию в отдельных массивах на PHP. Должен ли я сделать это первым? Я хотел бы просто использовать ng-repeat
если это возможно, я просто не знаю, как подойти к этому.
Я планирую отображать этот список в nav-list
как определено с помощью twitter bootstrap
Есть, вероятно, другой способ добиться этого с помощью директив, но
http://beta.plnkr.co/KjXZInfrDK9eRid2Rpqf
Вы определяете функцию, которую вы собираетесь вызывать, чтобы показать или скрыть заголовок:
// just a hard coded list of objects, we will output a header when the title changes $scope.presentations = [{"title":"a", "other":"something else"},{"title":"a", "other":"something else"},{"title":"b", "other":"something else"},{"title":"b", "other":"something else"}, {"title":"b", "other":"something else"}] $scope.currentTitle = '-1'; $scope.CreateHeader = function(title) { showHeader = (title!=$scope.currentTitle); $scope.currentTitle = title; return showHeader; }
Ваш html будет выглядеть примерно так:
<ul> <li ng-repeat="presentation in presentations"> <div ng-show="CreateHeader(presentation.title)"> {{presentation.title}} is the header </div> {{presentation.other}} is an attribute on the collection item </li> </ul>