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 相关文章推荐
JS取request值以及自动执行使用示例
Feb 24 Javascript
jquery实现搜索框常见效果的方法
Jan 22 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
Jun 10 Javascript
浅谈jQuery的offset()方法及示例分享
Jul 17 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
Jun 13 Javascript
微信小程序中显示html格式内容的方法
Apr 25 Javascript
详解vue 组件之间使用eventbus传值
Oct 25 Javascript
让Vue也可以使用Redux的方法
May 23 Javascript
vue实现PC端录音功能的实例代码
Jun 05 Javascript
微信小程序 scroll-view 实现锚点跳转功能
Dec 12 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
Feb 26 Javascript
Vue 组件复用多次自定义参数操作
Jul 27 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
SONY SRF-22W(33W)的电路分析和维修案例
2021/03/02 无线电
?生?D片??C字串
2006/12/06 PHP
PHP教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
54个提高PHP程序运行效率的方法
2015/07/19 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
PHP 7.4 新语法之箭头函数实例详解
2019/05/09 PHP
javascript 读取图片文件的大小
2009/06/25 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
jQuery探测位置的提示弹窗(toolTip box)详细解析
2013/11/14 Javascript
深入理解jQuery中live与bind方法的区别
2013/12/18 Javascript
实例详解angularjs和ajax的结合使用
2015/10/22 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
2016/11/17 Javascript
nodejs操作mongodb的填删改查模块的制作及引入实例
2018/01/02 NodeJs
详解vue引入子组件方法
2019/02/12 Javascript
JavaScript函数定义方法实例详解
2019/03/05 Javascript
ES6 Array常用扩展的应用实例分析
2019/06/26 Javascript
基于JS实现数字动态变化显示效果附源码
2019/07/18 Javascript
JavaScript实现多球运动效果
2020/09/07 Javascript
解决vue项目中出现Invalid Host header的问题
2020/11/17 Javascript
js制作提示框插件
2020/12/24 Javascript
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
基于Python Shell获取hostname和fqdn释疑
2016/01/25 Python
Python单例模式实例详解
2017/03/01 Python
Python selenium根据class定位页面元素的方法
2019/02/26 Python
pandas dataframe 中的explode函数用法详解
2020/05/18 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
水芝澳美国官网:H2O Plus
2016/10/15 全球购物
美国最大的珠宝商之一:Littman Jewelers
2016/11/13 全球购物
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
项目考察欢迎辞
2014/01/17 职场文书
车辆工程专业求职信
2014/06/14 职场文书
优秀党员事迹材料
2014/12/18 职场文书
Python编程中Python与GIL互斥锁关系作用分析
2021/09/15 Python