angularjs 渲染页面时,有时需要根据远程接口返回的数据结构来渲染:
请求远程数据--》数据模型变化--》angularjs监控到模型变化--》重新渲染页面。
那么有时需要在有数据且页面被渲染完成后,再执行某个方法,如:
semnatic 的 accrodion:
<div class="ui accordion"> <div class="active title"> <i class="dropdown icon"></i> 菜单名称 </div> <div class="active content"> <ul > <li><a href="">菜单1</a> <li><a href="">菜单2</a> <li><a href="">菜单3</a> <li><a href="">菜单4</a> </ul> </div> <div class=" title"> <i class="dropdown icon"></i> 菜单名称 </div> <div class=" content"> <ul > <li><a href="">菜单1</a> <li><a href="">菜单2</a> <li><a href="">菜单3</a> <li><a href="">菜单4</a> </ul> </div> </div> <script> $('.ui.accordion') .accordion(); </script>
需要执行accordion 方法才能显示出来。
通常菜单由数据来决定,改为angularjs 实现为:
<div ng-if="userModel.menuList.length>0" class="ui accordion " > <div ng-repeat="menuDir in userModel.menuList" > <div class="{{$first?'active':''}} title"> <i class="dropdown icon"></i> {{menuDir.menuName}} </div> <div class="{{$first?'active':''}} content"> <ul ng-repeat="menu in menuDir.childrens"> <li ><a ui-sref="/views/{{menu.menuUrl}}"> {{menu.menuName}}</a></li> </ul> </div> </div> </div>
页面在加载完后台数据,生成userModel.menuList数据,angularjs 监控到userModel.menuList数据变化,再渲染页面,在这执行完成后,再执行$('.ui.accordion') .accordion();,才能渲染出accordion校果。
那么如何实现在页面angularjs 渲染完成后,再执行方法呢?
一种指令实现的方式:
.directive('OnReanderFinsh',[function(){ return { restrict:'A', link:function ($scope, element, attrs, controller) { var fun = $scope.$eval(attrs.OnReanderFinsh);//计算表达式的值 if(fun && typeof(fun)=='function'){ fun(); } } }; }]);
html页中引入指令的js,在 ng-repeat一行中修改:
<div ng-repeat="menuDir in userModel.menuList" on-reander-finsh="renderAccordion">
controller中修改:
$scope.renderAccordion = function (){ $('.ui.accordion') .accordion(); };
就是利用了一个指令完成(ng-repeat 渲染完成),再执行下一个指令的渲染顺序,来实现的。
相关推荐
在用AngularJS期间, 经常用到ng-repeat, 业务中有时需要在异步获取数据并用ng-repeat遍历渲染完页面后执行某个操作,angular本身并没有提供监听ng-repeat渲染完成的指令,所以需要自己动手写。有经验的同学都应该...
AngularJS是谷歌开发的一个开源的JavaScript框架,用于构建动态Web应用程序。... ...指令通常通过添加以"ng-"为前缀的属性来使用,...通过理解和掌握AngularJS指令的使用,开发者可以构建出更加动态和响应式的Web应用程序。
ng-model将控件的值与模型数据关联,ng-repeat用于迭代数组并重复渲染视图,ng-if则根据条件决定是否显示某个元素。熟练掌握这些指令是提升开发效率的关键。 在C#中,开发人员需要了解ASP.NET MVC的控制器类,如何...
4. **指令**:AngularJS提供了一套自定义HTML标签和属性的能力,如`ng-repeat`用于循环遍历数组,`ng-if`用于条件渲染,`ng-show`/`ng-hide`控制元素的显示隐藏等。这些指令增强了HTML的表现力,让其具备了更多的...
所有组件(如控制器、服务、指令等)都应隶属于某个模块。 总结,AngularJS提供了全面的解决方案来构建复杂的Web应用。通过掌握以上基础知识,你可以开始搭建自己的AngularJS项目,并逐步深入学习更高级的主题,如...
`ng-cloak`是AngularJS提供的一个内置指令,它的主要作用是在数据绑定完成之前隐藏相关元素,从而避免用户看到不完整的页面内容。使用`ng-cloak`非常简单,只需要在需要隐藏的元素上添加这个指令,并在CSS中定义`.ng...
- `onload`: 可选属性,当包含的文件加载完成后,AngularJS会执行指定的JavaScript表达式。 - `autoscroll`: 可选属性,如果设置为`true`,则包含的内容将在视口中自动滚动至可见区域。默认情况下,此属性为`false`...
使此功能正常工作所需的代码很杂乱,如果您每次必须为每个页面和指令执行此操作,则该代码可能是多余的。 幸运的是有一个插件。安装非常简单,首先下载插件并将其放置在应用程序目录中的某个位置,然后将其作为应用...
在AngularJS中,ng-controller指令用于指定页面中某个区域的控制器。在购物车示例中,`ng-controller="CartController"`定义了一个购物车控制器,该控制器的作用域中包含了购物车中所有商品的列表。 AngularJS的...
1. `ng-app`:这是AngularJS应用的启动指令,用于标记HTML文档中的某个部分作为AngularJS应用的根元素。例如,`<html ng-app>`表示整个HTML文档是一个未命名的AngularJS应用。 2. `ng-controller`:这个指令用来...
$apply函数通常在AngularJS外部的代码中被调用,它的职责是将外部代码的执行包装在一个AngularJS的执行上下文中,这样就可以触发digest循环。$digest循环则是AngularJS的核心,它负责运行所有监视器,检查数据变化,...
NgIf指令用于基于表达式的值决定是否在DOM中包含某个元素。如果表达式为真,元素将被插入到DOM中;如果表达式为假,元素将被移除。其语法是`*ngIf="expression"`。例如: ```html *ngIf="age >= 18">You are an ...
通过`$sce.trustAsHtml()`方法,开发者可以明确表示他们信任某个HTML字符串,并允许AngularJS将其作为HTML进行解析。在处理任何来自不可信源的HTML内容时,都应该使用这种策略,以保证应用的安全性。
3. AngularJS或Vue.js等前端框架:通过指令或组件来实现权限相关的条件渲染。 五、测试与优化 1. 测试覆盖:进行各种角色和权限组合的测试,确保没有权限漏洞。 2. 性能优化:权限检查应在不影响系统响应速度的前提...
插件也支持循环和条件渲染,使用类似于AngularJS中的指令语法,通过dv-for、dv-if和dv-show属性来控制节点的创建和显示。开发者可以通过这些属性为元素指定循环创建的条件、是否创建某个元素以及是否显示某个元素。...
路由守卫(Route Guards)是Angular2路由系统的一个强大特性,它允许在导航发生前执行某些逻辑,如检查用户是否已登录,或者数据是否已加载完成。有几种类型的路由守卫,包括`CanActivate`、`CanActivateChild`、`...
因此,ng-if更适合用于条件渲染,即当某个条件为真时,页面上才需要渲染的场景,因为这样可以减少不必要的DOM元素,从而提高性能。 2. $rootScope与$scope的区别 在Angular.js中,$rootScope是根作用域,它是所有...
9. **部署和测试**:项目完成后,需要在服务器上部署,可能使用Nginx或Apache作为Web服务器,Gunicorn或uWSGI作为Wsgi服务器。同时,单元测试和集成测试确保代码的质量和功能完整性。 综上所述,...
例如,`if...else`语句用于检查某个条件是否为真,如果为真则执行一段代码,否则执行另一段代码。 2. **条件注释**:在HTML中,尤其是在旧版的Internet Explorer浏览器中,有一种特殊的方式实现条件逻辑,那就是...
8. **数据绑定**:MVVM(Model-View-ViewModel)模式中,如AngularJS的`ng-repeat`指令,Vue的`v-for`指令,它们在后台数据改变时自动更新视图,实现了数据驱动的循环渲染。 了解并熟练掌握这些HTML与循环相关的...