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代码必备[js多浏览器兼容写法]
Oct 29 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
Jan 31 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
Mar 30 Javascript
js精美的幻灯片画集特效代码分享
Aug 29 Javascript
实例讲解jquery中mouseleave和mouseout的区别
Feb 17 Javascript
使用Vue.js创建一个时间跟踪的单页应用
Nov 28 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
Dec 31 Javascript
JS按钮闪烁功能的实现代码
Jul 21 Javascript
深入理解Vue官方文档梳理之全局API
Nov 22 Javascript
在vue中封装可复用的组件方法
Mar 01 Javascript
通过实例解析js简易模块加载器
Jun 17 Javascript
Vue 的双向绑定原理与用法揭秘
May 06 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初学者头疼问题总结
2006/07/08 PHP
PHP在特殊字符前加斜杠的实现代码
2011/07/17 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
PHP里8个鲜为人知的安全函数分析
2014/12/09 PHP
YII使用url组件美化管理的方法
2015/12/28 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
jQuery中:only-child选择器用法实例
2015/01/03 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
react.js 获取真实的DOM节点实例(必看)
2017/04/17 Javascript
JS实现的按钮点击颜色切换功能示例
2017/10/19 Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
2018/08/31 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
Python urlopen 使用小示例
2008/09/06 Python
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
Python数字图像处理之霍夫线变换实现详解
2018/01/12 Python
Python多进程与服务器并发原理及用法实例分析
2018/08/21 Python
对python模块中多个类的用法详解
2019/01/10 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
简单了解python中的与或非运算
2019/09/18 Python
python装饰器代替set get方法实例
2019/12/19 Python
Python之Django自动实现html代码(下拉框,数据选择)
2020/03/13 Python
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
夜大毕业生自我鉴定
2013/10/31 职场文书
银行实习鉴定
2013/12/13 职场文书
抗震救灾标语
2014/06/26 职场文书
品牌转让协议书
2014/08/20 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
设备技术员岗位职责
2015/04/11 职场文书
go 实现简易端口扫描的示例
2021/05/22 Golang
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL