这里很有棱角分明,这对我来说很光鲜。我知道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
,我只是不确定如何处理这个问题。
我计划使用twitter bootstrap
在nav-list
中显示此列表
答案 0 :(得分:2)
使用指令可能还有其他方法可以达到这个目的但
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>