ng-repeat渲染完成如何用AngularJS监听

这次给大家带来ng-repeat渲染完成如何用AngularJS监听,AngularJS监听ng-repeat渲染完成的注意事项有哪些,下面就是实战案例,一起来看一下。

某个项目,我的网页中有一个列表

元素,样式如下:

ng-repeat渲染完成如何用AngularJS监听

实际上它是通过Angular的ng-repeat形成的,html中的代码是:

  • {{ list.name }}
  • 登录后复制

    图中下方的新建清单button,点击之后就往lists数组中push了一个新的list对象,此时页面会自动渲染,也对应增加一个

    ,如下:

    ng-repeat渲染完成如何用AngularJS监听

    注意MyList1一直是active状态的(class=”active”),我的需求是新增list后,把新增的list设置为active,即在新增后就变成下面这种样式:

    ng-repeat渲染完成如何用AngularJS监听

    刚开始我尝试在button对应的函数中,往lists数组中push了新的list对象后,使用document.getElementById获取到新增的

    对象,然后为其添加一个class=”active”,结果发现获取到的DOM对象为null,经过搜索发现原因是:往lists数组push对象后,数组发生改变,所有的都会重新渲染,在push完成之后马上去找新增的DOM对象,DOM还没渲染好,因此是获取不到的。解法是:使用AngularJS的指令去监听ng-repeat是否渲染完成,在渲染完成后,再去取新增的对象,这个网上有很多相关的内容了,代码如下:

    myapp.directive('repeatFinish', function ($timeout) {  return {    restrict: "C",    link: function (scope, element, attr) {      if(scope.$last === true){        $timeout(function () {          scope.change_list(element[0]);        }, 10);      }    }  }});

    登录后复制

    上述代码建立了一个名为repeatFinish的指令,restrict: “C”表示指令放在DOM的class中(驼峰形式,即class=”repeat-finish”),scope.$last === true表示已经渲染到了最后一个对象,此时执行change_list函数(定义在控制器中,功能是把当前active的对象取消active,然后设置传入的DOM对象为active),element[0]可以直接取到当前渲染的DOM元素。注意我使用了$timeout,10ms后执行change_list,我发现直接使用change_list还是会找不到DOM,原因不明,期待大神解答。

    相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

    推荐阅读:

    使用selectpicker下拉框案例分析

    Vue如何使用动态刷新Echarts组件

    以上就是ng-repeat渲染完成如何用AngularJS监听的详细内容,更多请关注【创想鸟】其它相关文章!

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

    发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2763185.html

    (0)
    上一篇 2025年3月8日 10:07:39
    下一篇 2025年2月19日 23:51:19

    AD推荐 黄金广告位招租... 更多推荐

    相关推荐

    • vue处理storejs获取的数据

      这次给大家带来vue处理storejs获取的数据,vue处理storejs获取数据的注意事项有哪些,下面就是实战案例,一起来看一下。 具体代码如下所示: export default { data(){ return { shopList:…

      编程技术 2025年3月8日
      200
    • 给nodejs里密码加密有哪几种方式

      这次给大家带来给nodejs里密码加密有哪几种方式,给nodejs里密码加密的注意事项有哪些,下面就是实战案例,一起来看一下。 一、关于node加密模块crypto的介绍 其实就是使用MD5加密的,不太安全,在实际开发中根据自己的方案进行加…

      编程技术 2025年3月8日
      200
    • nodejs连接mysql数据库步骤详解

      这次给大家带来nodejs连接mysql数据库步骤详解,nodejs连接mysql数据库的mysql数据库有哪些,下面就是实战案例,一起来看一下。 一、几个常用的全局变量 1、filename获取当前文件的路径2、dirname获取当前文件…

      编程技术 2025年3月8日
      200
    • 在vue项目中使用sass的配置方法_vue.js

      这次给大家带来vue使用sass配置步骤详解,vue使用sass配置的注意事项有哪些,下面就是实战案例,一起来看一下。   1、创建一个基于 webpack 模板的新项目 $ vue init webpack myvue 登录后复制 2、在…

      2025年3月8日
      200
    • 动态操作js/css文件有哪些方法

      这次给大家带来动态操作js/css文件有哪些方法,动态操作js/css文件的注意事项有哪些,下面就是实战案例,一起来看一下。 //动态加载一个js/css文件function loadjscssfile(filename, filetype…

      编程技术 2025年3月8日
      200
    • Javascript基本使用方式

      这些是我所整理的javascript中最基本的使用规则和方法,通过这些知识的学习,可以对javascript有个最基本的认识和了解。 一、如何使用JS代码:       使用标签在HTML网页中,JavaScript代码。注意,标签要成对出…

      编程技术 2025年3月8日
      200
    • JavaScript的基本规范

      通常大家所知道的,每种编程语言都有着自己的编码规范,下面这些是我整理的javascript的基本编码规范。 1.不要在同一行声明多个变量 var a = null;var b = 0;var c = undefined;123 登录后复制 …

      编程技术 2025年3月8日
      200
    • js 判断客户端能否上网详解

      这篇文章主要介绍了js 判断客户端能否上网详解,需要的朋友可以参考下。 第一种: if(!window.jQuery){ alert(“能上网”); }else{ alert(“不能上网”); } 登录后复制 第二种:  用js跨域来做  …

      编程技术 2025年3月8日
      200
    • js如何下载图片到本地

      这篇文章主要为大家详细介绍了js下载图片到本地的代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 代码如下: $(function(){      //二维码      (function(){          var img_s…

      编程技术 2025年3月8日
      200
    • webpack打包压缩js与css教程说明

      这次给大家带来webpack打包压缩js与css教程说明,webpack打包压缩js与css的注意事项有哪些,下面就是实战案例,一起来看一下。 打包压缩js与css 由于webpack本身集成了UglifyJS插件(webpack.opti…

      编程技术 2025年3月8日
      200

    发表回复

    登录后才能评论