摘要:注意我使用了,后执行,我发现直接使用还是会找不到,原因不明,期待大神解答。
某个项目,我的网页中有一个列表元素,样式如下:
实际上它是通过Angular的ng-repeat形成的,html中的代码是:
图中下方的新建清单button,点击之后就往lists数组中push了一个新的list对象,此时页面会自动渲染,也对应增加一个,如下:
注意MyList1一直是active状态的(class="active"),我的需求是新增list后,把新增的list设置为active,即在新增后就变成下面这种样式:
刚开始我尝试在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,原因不明,期待大神解答。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/107634.html
摘要:比如,我们可以监听事件由实例发出,然后在任何浏览器中就是变化的时候都会得到通知,如下所示每一个作用域对象都会有这个方法,可以用来注册一个作用域事件的侦听器。这个函数所扮演的侦听器在被调用时会有一个对象作为第一个参数。 上一篇:【译】《精通使用AngularJS开发Web App》(二) 下一篇:【译】《精通使用AngularJS开发Web App》(四) 书名:Mastering W...
摘要:从最重要的页面开始吧锦标赛的表格。重启你的应用,看看搜索框。然后我们加入两个路由一个转向锦标赛表格,另一个转向车手详情。你所需要做的只是创建一个名为的文件,然后将锦标赛表格放在那里。结论我们已经介绍了开发一个简单应用所需的一切。 AngularJS是Google开源出来的一款 Javascript MVC 框架。利用AngularJS,你可以构建结构清晰、便于测试和维护的前端应用。 ...
摘要:为指令赋值函数名,即可运行。它也是一个对象,指向应用程序作用域内的所有元素和执行上下文。简而言之,是与指令元素相关联的当前作用域,可以理解为视图和控制器间的一个通道。它们被组织为模块形式,之后可以被另一个引用。 Angularjs Angular是一款主旋律的MVVM框架,框架和传统的库不同: 类库是一些函数的集合,它能帮助你写WEB应用。起主导作用的是你的代码,由你来决定何时使用类...
摘要:引言指令可以说是的核心,而其开发也是比较困难的,本文主要介绍指令的一些参数和的绑定策略。指令执行的优先级,用于多个指令同时作用于同一个元素时。改变父会影响指令,而改变指令不会影响父。在父和指令之间建立双向绑定。 引言 指令(Directive)可以说是 AngularJS 的核心,而其开发也是比较困难的,本文主要介绍指令的一些参数和scope的绑定策略。 参数 从 AngularJS ...
摘要:最近做一个项目,应该来说比较简单的输入框验证地址而已,允许空值首先是对地址进行检验匹配是否正确,开始我在指令中是这样写的。 最近做一个项目,应该来说比较简单的输入框验证ip地址而已,允许空值 showImg(https://segmentfault.com/img/bVKrfs?w=294&h=75); 首先是对ip地址进行检验匹配是否正确,开始我在指令中是这样写的。我输入空格后会提示...
阅读 2000·2023-04-25 23:30
阅读 1432·2021-11-24 10:18
阅读 3048·2021-10-09 09:54
阅读 1994·2021-10-08 10:05
阅读 3411·2021-09-23 11:21
阅读 3143·2019-08-30 15:52
阅读 1540·2019-08-30 13:05
阅读 1036·2019-08-30 13:02