Angular中ng-repeat与ul li的多层嵌套重复问题


Posted in Javascript onJuly 24, 2017

学习ng-repeat的过程中常常使用到ng-repeat=”item in array”来循环输出所需要的元素,但是当我们需要使用ng-repeat进行多层嵌套时则容易出现数据重复的问题。

如在加载与点击事件于js中进行两次http请求获取data分别为list01[]数组和list02[]赋值再如下显示则会导致it1下每个ul都会重复输出list02[]数组中的内容

<ul ng-repeat="it1 in list01">
  <li ng-click="show(it1)">{{it1.value}}</li>
  <ul ng-repeat="it2 in list02">
    <li>{{it2.value}}</li>
  </ul>
</ul>

输出如:

1-1
  1-2
  1-1
  1-2

而非

1-1
  1-2
  2-1
  2-2

其实这个也不是问题,只要换一种思维方式将列表和父级元素相关联形成树状结构就好了

HTML中代码如下

<ul ng-repeat="it1 in list01">
  <li ng-click="show(it1)">{{it1.name}}</li>
  <ul ng-repeat="it2 in it1.child" ng-show="it1.showChild" style="text-indent:10px;">
    <li ng-click="show(it1, it2)">{{it2.name}}</li>
    <ul ng-repeat="it3 in it2.child" ng-show="it2.showChild" style="text-indent:10px;">
      <li ng-click="show(it1, it2, it3)">{{it3.name}}</li>
      <ul ng-repeat="it4 in it3.child" ng-show="it3.showChild">
        <li>{{it4.name}}</li>
      </ul>
    </ul>
  </ul>
</ul>

js中代码如下

$http.get('ng01.json').success(function (_data) {
  $scope.list01 = [];
  $scope.list01 = _data.data;
});
$scope.show = function (it1, it2, it3) {
  if(it3 != null){
    $http.get("ng04.json").success(function (_data) {
      $scope.list04 = [];
      $scope.list04 = _data.data;
      for(var x in $scope.list03){
        $scope.list03[x].showChild = false;
      }
      it3.showChild = true;
      it3.child = _data.data;
     });
     return;
  }
  if(it2 != null){
    $http.get("ng03.json").success(function (_data) {
      $scope.list03 = [];
      $scope.list03 = _data.data;
      for(var x in $scope.list02){
        $scope.list02[x].showChild = false;
      }
      it2.showChild = true;
      it2.child = _data.data;
    });
    return;
  }
  $http.get("ng02.json").success(function (_data) {
    $scope.list02 = [];
    $scope.list02 = _data.data;
    for(var x in $scope.list01){
      $scope.list01[x].showChild = false;
    }
    it1.showChild = true;
    it1.child = _data.data;
  });
}

json文件都是这样的

{
 "success":1,
 "data":[
  {"name":"01"},
  {"name":"02"}
 ]
}

总结

以上所述是小编给大家介绍的Angular中ng-repeat与ul li的多层嵌套,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript初学者需要了解10个小技巧
Aug 25 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
Sep 02 Javascript
基于jquery自己写tab滑动门(通用版)
Oct 30 Javascript
IE不支持getElementsByClassName最终完美解决方案
Dec 17 Javascript
在vue中添加Echarts图表的基本使用教程
Nov 22 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
Dec 07 Javascript
vue项目总结之文件夹结构配置详解
Dec 13 Javascript
基于vue-cli3和element实现登陆页面
Nov 13 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
Feb 10 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
Mar 16 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
Jul 20 Javascript
vue实现移动端项目多行文本溢出省略
Jul 29 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
Jul 24 #Javascript
浅析JavaScript中的平稳退化(graceful degradation)
Jul 24 #Javascript
vue.js移动端app实战1:初始配置详解
Jul 24 #Javascript
React 子组件向父组件传值的方法
Jul 24 #Javascript
浅谈Node.js ORM框架Sequlize之表间关系
Jul 24 #Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
Jul 24 #Javascript
jQuery实现拼图小游戏(实例讲解)
Jul 24 #jQuery
You might like
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
php生成html文件方法总结
2014/12/01 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
2016/06/13 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
2017/06/07 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
【消息提示组件】,兼容IE6/7&amp;&amp;FF2
2007/09/04 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
angular中使用路由和$location切换视图
2015/01/23 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
JavaScript内存泄漏的处理方式
2017/11/20 Javascript
原生JS实现的双色球功能示例
2018/02/02 Javascript
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
JavaScript事件对象深入详解
2018/12/30 Javascript
Python3 能振兴 Python的原因分析
2014/11/28 Python
Python中decorator使用实例
2015/04/14 Python
详解python开发环境搭建
2016/12/16 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
德国知名健康零食网上商店:Seeberger
2017/07/27 全球购物
澳大利亚排名第一的在线酒类商店:MyBottleShop
2018/04/26 全球购物
小组口号大全
2014/06/09 职场文书
党的群众路线教育实践活动调研报告
2014/11/03 职场文书
典型事迹材料范文
2014/12/29 职场文书
2015社区爱国卫生工作总结
2015/04/21 职场文书
原告离婚代理词
2015/05/23 职场文书
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang