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/Jquery——简单定时器的多种实现方法
Jul 03 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
Aug 18 Javascript
JS.elementGetStyle(element, style)应用示例
Sep 24 Javascript
js向上无缝滚动,网站公告效果 具体代码
Nov 18 Javascript
jQuery实现购物车计算价格功能的方法
Mar 25 Javascript
Javascript的表单验证长度
Mar 16 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
Sep 04 Javascript
JavaScript数据结构之二叉树的遍历算法示例
Apr 13 Javascript
AngularJs 终极购物车(实例讲解)
Nov 08 Javascript
代码详解JS操作剪贴板
Feb 11 Javascript
sortable+element 实现表格行拖拽的方法示例
Jun 07 Javascript
vue实现购物车的监听
Apr 20 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表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
2011/08/22 PHP
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
js报$ is not a function 的问题的解决方法
2014/01/20 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
2014/02/20 Javascript
JavaScript实现SHA-1加密算法的方法
2015/03/11 Javascript
jquery插件validation实现验证身份证号等
2015/06/04 Javascript
纯js实现无限空间大小的本地存储
2015/06/18 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
探讨AngularJs中ui.route的简单应用
2016/11/16 Javascript
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
vue-router相关基础知识及工作原理
2018/03/16 Javascript
超出JavaScript安全整数限制的数字计算BigInt详解
2018/06/24 Javascript
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
在Django框架中编写Context处理器的方法
2015/07/20 Python
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
轻量级的Web框架Flask 中模块化应用的实现
2017/09/11 Python
django实现同一个ip十分钟内只能注册一次的实例
2017/11/03 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
Pandas之MultiIndex对象的示例详解
2019/06/25 Python
python实现的Iou与Giou代码
2020/01/18 Python
JAVA SWT事件四种写法实例解析
2020/06/05 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
石油大学毕业生自荐信
2014/01/28 职场文书
大学班级计划书
2014/04/29 职场文书
驻村工作先进事迹
2014/08/14 职场文书
企业领导班子四风对照检查材料
2014/09/27 职场文书
村党支部书记四风问题个人对照检查材料思想汇报
2014/10/06 职场文书
个人房屋转让协议书范本
2014/10/26 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
逃课检讨书
2015/01/26 职场文书
技术员岗位职责
2015/02/04 职场文书
清明节扫墓活动总结
2015/02/09 职场文书
小学运动会开幕词
2016/03/04 职场文书
2019年销售部季度工作计划3篇
2019/10/09 职场文书