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 相关文章推荐
使用TextRange获取输入框中光标的位
Oct 14 Javascript
js实现兼容IE6与IE7的DIV高度
May 13 Javascript
实现只能输入数字的input不用replace方法
Sep 12 Javascript
javascript获取鼠标点击元素对象(示例代码)
Dec 20 Javascript
jQuery中unwrap()方法用法实例
Jan 16 Javascript
用javascript实现自动输出网页文本
Jul 30 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
Apr 29 Javascript
微信小程序 获取微信OpenId详解及实例代码
Oct 31 Javascript
js 获取本地文件及目录的方法(推荐)
Nov 10 Javascript
深入理解node.js http模块
Jan 24 Javascript
vue全局组件与局部组件使用方法详解
Mar 29 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
Nov 13 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
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
使用迭代器 遍历文件信息的详解
2013/06/08 PHP
ThinkPHP之getField详解
2014/06/20 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
php通过sort()函数给数组排序的方法
2015/03/18 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
浅谈Javascript面向对象编程
2011/11/15 Javascript
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
2013/09/16 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
js获取指定日期周数以及星期几的小例子
2014/06/27 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
PHP 数组current和next用法分享
2015/03/05 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
JS正则表达式完美实现身份证校验功能
2017/10/18 Javascript
js实现鼠标单击Tab表单切换效果
2018/05/16 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
2019/10/25 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
详细介绍Python中的偏函数
2015/04/27 Python
详解Python的Twisted框架中reactor事件管理器的用法
2016/05/25 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
python3去掉string中的标点符号方法
2019/01/22 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
2020/10/09 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
社区消防工作实施方案
2014/03/21 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书
创业计划书之o2o水果店
2019/08/30 职场文书
MySQL优化常用的19种有效方法(推荐!)
2022/03/17 MySQL