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 相关文章推荐
XP折叠菜单&amp;仿QQ2006菜单
Dec 16 Javascript
浅析document.ready和window.onload的区别讲解
Dec 18 Javascript
JS中判断null、undefined与NaN的方法
Mar 24 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
Mar 24 Javascript
js动态创建及移除div的方法
Jun 03 Javascript
js模拟淘宝网的多级选择菜单实现方法
Aug 18 Javascript
RequireJS使用注意细节
May 15 Javascript
Vue实现表格中对数据进行转换、处理的方法
Sep 06 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
Dec 10 Javascript
es6函数之尾调用优化实例分析
Apr 25 Javascript
antd table按表格里的日期去排序操作
Nov 17 Javascript
微信小程序反编译的实现
Dec 10 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
在html文件中也可以执行php语句的方法
2015/04/09 PHP
微信自定义分享php代码分析
2016/11/24 PHP
Symfony查询方法实例小结
2017/06/28 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
jquery isType() 类型判断代码
2011/02/14 Javascript
JS判断元素为数字的奇异写法分享
2012/08/01 Javascript
javascript当中的代码嗅探扩展原生对象和原型(prototype)
2013/01/11 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
JavaScript调试之console.log调试的一个小技巧分享
2017/08/07 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
解决vue 项目引入字体图标报错、不显示等问题
2018/09/01 Javascript
原生js实现随机点名功能
2019/11/05 Javascript
以一个投票程序的实例来讲解Python的Django框架使用
2016/02/18 Python
Python Queue模块详细介绍及实例
2016/12/27 Python
python中logging库的使用总结
2017/10/18 Python
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
2017/12/14 Python
python中set()函数简介及实例解析
2018/01/09 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
python学习笔记之多进程
2020/08/06 Python
Otel.com:折扣酒店预订
2017/08/24 全球购物
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
汉森批发:Hansen Wholesale
2018/05/24 全球购物
微软台湾官方网站:Microsoft台湾
2018/08/15 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
体育专业学生自我评价范文
2014/01/17 职场文书
社区学习十八大感想
2014/01/22 职场文书
运动会开幕式邀请函
2014/02/03 职场文书
2014年教师节寄语
2014/04/03 职场文书
环保建议书300字
2014/05/14 职场文书
责任书范本
2014/08/25 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
幼儿园六一儿童节主持词
2015/06/30 职场文书
html5调用摄像头实例代码
2021/06/28 HTML / CSS