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 相关文章推荐
JQuery打造PHP的AJAX表单提交实例
Nov 03 Javascript
JavaScript 图片预览效果 推荐
Dec 22 Javascript
javascript Firefox与IE 替换节点的方法
Feb 24 Javascript
js href的用法
May 13 Javascript
JavaScript Array对象扩展indexOf()方法
May 09 Javascript
AngularJs 弹出模态框(model)
Apr 07 Javascript
Bootstrap 填充Json数据的实例代码
Jan 11 Javascript
JavaScript ES6中const、let与var的对比详解
Jun 18 Javascript
使用jQuery实现简单的tab框实例
Aug 22 jQuery
详解VUE Element-UI多级菜单动态渲染的组件
Apr 25 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
Aug 07 Javascript
JavaScript事件循环及宏任务微任务原理解析
Sep 02 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 insert语法详解
2008/06/07 PHP
PHP中使用file_get_contents post数据代码例子
2015/02/13 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
一些常用的JS功能函数(2009-06-04更新)
2009/06/04 Javascript
js将long日期格式转换为标准日期格式实现思路
2013/04/07 Javascript
js 遍历json返回的map内容示例代码
2013/10/29 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
使用vue.js制作分页组件
2016/06/27 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
2016/08/26 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
移动端(微信等使用vConsole调试console的方法
2019/03/05 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
详解微信小程序自定义组件的实现及数据交互
2019/07/22 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
2019/10/11 Javascript
JS实现图片切换特效
2019/12/23 Javascript
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
一份python入门应该看的学习资料
2018/04/11 Python
Python基于SMTP协议实现发送邮件功能详解
2018/08/14 Python
使用Python的toolz库开始函数式编程的方法
2018/11/15 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
Python拼接字符串的7种方式详解
2020/03/19 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
MxNet预训练模型到Pytorch模型的转换方式
2020/05/25 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
Oracle快照(snapshot)
2015/03/13 面试题
物业管理专业个人的自我评价
2013/11/19 职场文书
总务岗位职责
2013/11/19 职场文书
警校毕业生自我评价
2014/04/06 职场文书
医学求职自荐信
2014/06/21 职场文书
作风建设剖析材料
2014/10/06 职场文书
合作协议书范本
2014/10/25 职场文书
2014年转正工作总结
2014/11/08 职场文书
素质拓展训练感想
2015/08/07 职场文书