angular中ng-repeat嵌套循环显示的问题

本文探讨了在Angular中使用ng-repeat进行嵌套循环时遇到的问题,尤其是如何在页面加载前获取所有父元素和子元素的数据以减少请求次数并保持选中状态。作者提出了一种解决方案,即预先请求所有数据,将父元素存储在一个数组team中,子元素存储在persons数组中,通过外层ng-repeat循环team,内层循环persons,同时处理点击事件以实现子元素的显示与隐藏。
  1. 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)”>
  2. 邀请的与会人员 清除全部
    • {{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; }) } } })
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值