- 1.使用angular来实现通过父元素的值来获取对应的子元素(这里的元素的显示都是通过向后台请求数据获取的,子元素的获取需要对应的父元素的参数id),且点击某个父元素的时候实现对应的子元素的显示与隐藏,最开始我的实现思路是在点击某个父元素的时候,向后台发送请求,这样基本上需求也可以实现,但是还涉及到子元素的的选中显示,所以每点击一点发送一次请求这种方法是存在问题的:首先是增加了请求的次数,还有就是无法保留每次的选中状态。
出于这样的考虑我决定在页面加载之前就请求到所有的子元素和父元素的数据,这就需要思考对应的子元素如何获取了。
最开始我是先获取到所有的分组即父元素放在一个数组team中,然后通过循环获取到每一个分组对应的成员放在另一个数组persons.push()中。外层的分组通过ng-repeat数组team,内层的成员通过ng-repeat数组persons[KaTeX parse error: Expected 'EOF', got '&' at position 415: …vm.activeIndex &̲& vm.isClicked"…index}}" name="{{items.cName}}"
ng-click=“vm.chose(items,$event,items.id)”
ng-checked=“isSeclected(items.id)”> - ***邀请的与会人员 清除全部
- {{item.cName}}
对应的逻辑代码如下: init(){ this.remote.getTeam() .then((res) => { if
(res.data.code == 0) { this.team = res.data.data; for (let i = 0; i
< res.data.data.length; i++) {
this.remote.getPerson(this.team[i].id) .then((res) => {
this.persons.push(res.data.data); }) } } }) }) } showPerson(id,
item) { if (this.activeIndex != id) { this.isClicked = true; } else
{ this.isClicked = !this.isClicked; } this.activeIndex = id; }
实现发现子成员的显示有问题,只能显示第一个组下的成员,于是将代码做了一定的修改,循环获取的子成员直接放在分组的children属性中,这样渲染子元素会方便很多,
具体的修改代码如下:通讯录人员- >{{item.tName}}({{item.account}}人)
- {{items.cName}}
对应的js逻辑 this.remote.getTeam() .then((res) => { if (res.data.code ==
0) { this.team = res.data.data; for (let i = 0; i <
res.data.data.length; i++) { this.remote.getPerson(this.team[i].id)
.then((res) => { this.team[i].children = res.data.data; }) } } })
angular中ng-repeat嵌套循环显示的问题
最新推荐文章于 2023-12-19 16:38:03 发布
本文探讨了在Angular中使用ng-repeat进行嵌套循环时遇到的问题,尤其是如何在页面加载前获取所有父元素和子元素的数据以减少请求次数并保持选中状态。作者提出了一种解决方案,即预先请求所有数据,将父元素存储在一个数组team中,子元素存储在persons数组中,通过外层ng-repeat循环team,内层循环persons,同时处理点击事件以实现子元素的显示与隐藏。
2万+

被折叠的 条评论
为什么被折叠?



