【发布时间】:2015-10-11 18:01:38
【问题描述】:
假设我有以下数据:
sampleData = [{'artist': 'John', 'id': 1}, {'artist': 'John', 'id': 2},
{'artist': 'Tim', 'id': 3}, {'artist': 'Jimmy', 'id': 4}, {'venue': 'Rock club', 'id':1}, {'venue': 'Rock club', 'id': 2}, {'venue': 'Tonys', 'id': 3}]
此数据可以在我的控制器中找到并且不会更改。我想要做的是在主<ul> 中构造两个嵌套列表。
鉴于我有以下输入,其中用户键入“J”或“j”:
<input ng-model="query" type="text" placeholder="Filter by">
这是我希望使用 ng-repeat 呈现的内容(除非我不必使用 ng-repeat):
<ul>
<h1>artist</h1>
<li>
<ul>
<li>John (There are two 2 Johns)</li>
<li>Jimmy</li>
</ul>
</li>
<li>
<ul>
<h1>Venue</h1>
<li>Jock Club (There are two 2 Jock Club)</li>
</ul>
</li>
</ul>
最初,我尝试编写一个客户过滤器,从过滤后的列表中获取结果并处理数据。 Angular 对我的过滤器不满意,因为我对原始数据的修改太多,所以我收到了一个无限的摘要循环。所以现在我回到第一方,试图决定这是否最好用指令或过滤器来完成。我怀疑我需要在我的控制器或指令中重组我的数据以获得我的预期结果。同样,我的预期结果将是根据用户输入的内容过滤sampleData 的艺术家和场地子列表。实时更新是理想的选择。
【问题讨论】:
-
如果可以的话,重组您的数据以拥有一组场地和一组单独的艺术家。像这样的东西:{艺术家:[{name:'Johnny',...},{name:'Jimmy',...}],场地:[{name:'Jock Club',...},{ ...}]}
-
这实际上正是我重组数据的方式,只是我使用了过滤器。
标签: javascript html angularjs angularjs-directive angularjs-filter