`

angularjs 指令渲染完成后执行某个方法

 
阅读更多

 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渲染完成后执行脚本的方法

    在用AngularJS期间, 经常用到ng-repeat, 业务中有时需要在异步获取数据并用ng-repeat遍历渲染完页面后执行某个操作,angular本身并没有提供监听ng-repeat渲染完成的指令,所以需要自己动手写。有经验的同学都应该...

    AngularJS入门教程之AngularJS指令

    AngularJS是谷歌开发的一个开源的JavaScript框架,用于构建动态Web应用程序。... ...指令通常通过添加以"ng-"为前缀的属性来使用,...通过理解和掌握AngularJS指令的使用,开发者可以构建出更加动态和响应式的Web应用程序。

    angularjs 和 MVC的结合

    ng-model将控件的值与模型数据关联,ng-repeat用于迭代数组并重复渲染视图,ng-if则根据条件决定是否显示某个元素。熟练掌握这些指令是提升开发效率的关键。 在C#中,开发人员需要了解ASP.NET MVC的控制器类,如何...

    angularJs基础(2-6)

    4. **指令**:AngularJS提供了一套自定义HTML标签和属性的能力,如`ng-repeat`用于循环遍历数组,`ng-if`用于条件渲染,`ng-show`/`ng-hide`控制元素的显示隐藏等。这些指令增强了HTML的表现力,让其具备了更多的...

    angularjs:angularjs轻松入门博文

    所有组件(如控制器、服务、指令等)都应隶属于某个模块。 总结,AngularJS提供了全面的解决方案来构建复杂的Web应用。通过掌握以上基础知识,你可以开始搭建自己的AngularJS项目,并逐步深入学习更高级的主题,如...

    Angularjs在初始化未完毕时出现闪烁问题的解决方法分析

    `ng-cloak`是AngularJS提供的一个内置指令,它的主要作用是在数据绑定完成之前隐藏相关元素,从而避免用户看到不完整的页面内容。使用`ng-cloak`非常简单,只需要在需要隐藏的元素上添加这个指令,并在CSS中定义`.ng...

    AngularJS基础 ng-include 指令示例讲解

    - `onload`: 可选属性,当包含的文件加载完成后,AngularJS会执行指定的JavaScript表达式。 - `autoscroll`: 可选属性,如果设置为`true`,则包含的内容将在视口中自动滚动至可见区域。默认情况下,此属性为`false`...

    AngularJS-Scope.onReady:AngularJS的辅助包装器,用于使控制器和指令与HTTP数据保持同步

    使此功能正常工作所需的代码很杂乱,如果您每次必须为每个页面和指令执行此操作,则该代码可能是多余的。 幸运的是有一个插件。安装非常简单,首先下载插件并将其放置在应用程序目录中的某个位置,然后将其作为应用...

    AngularJS入门(用ng-repeat指令实现循环输出

    在AngularJS中,ng-controller指令用于指定页面中某个区域的控制器。在购物车示例中,`ng-controller="CartController"`定义了一个购物车控制器,该控制器的作用域中包含了购物车中所有商品的列表。 AngularJS的...

    AngularJS Bootstrap

    1. `ng-app`:这是AngularJS应用的启动指令,用于标记HTML文档中的某个部分作为AngularJS应用的根元素。例如,`&lt;html ng-app&gt;`表示整个HTML文档是一个未命名的AngularJS应用。 2. `ng-controller`:这个指令用来...

    angularjs 的数据绑定实现原理

    $apply函数通常在AngularJS外部的代码中被调用,它的职责是将外部代码的执行包装在一个AngularJS的执行上下文中,这样就可以触发digest循环。$digest循环则是AngularJS的核心,它负责运行所有监视器,检查数据变化,...

    Angular2内置指令NgFor和NgIf详解

    NgIf指令用于基于表达式的值决定是否在DOM中包含某个元素。如果表达式为真,元素将被插入到DOM中;如果表达式为假,元素将被移除。其语法是`*ngIf="expression"`。例如: ```html *ngIf="age &gt;= 18"&gt;You are an ...

    详解angular用$sce服务来过滤HTML标签

    通过`$sce.trustAsHtml()`方法,开发者可以明确表示他们信任某个HTML字符串,并允许AngularJS将其作为HTML进行解析。在处理任何来自不可信源的HTML内容时,都应该使用这种策略,以保证应用的安全性。

    具有权限控制的通用菜单的设计与实现 .zip

    3. AngularJS或Vue.js等前端框架:通过指令或组件来实现权限相关的条件渲染。 五、测试与优化 1. 测试覆盖:进行各种角色和权限组合的测试,确保没有权限漏洞。 2. 性能优化:权限检查应在不影响系统响应速度的前提...

    jquery dataview数据视图插件使用方法

    插件也支持循环和条件渲染,使用类似于AngularJS中的指令语法,通过dv-for、dv-if和dv-show属性来控制节点的创建和显示。开发者可以通过这些属性为元素指定循环创建的条件、是否创建某个元素以及是否显示某个元素。...

    Angular2 之 路由与导航详细介绍

    路由守卫(Route Guards)是Angular2路由系统的一个强大特性,它允许在导航发生前执行某些逻辑,如检查用户是否已登录,或者数据是否已加载完成。有几种类型的路由守卫,包括`CanActivate`、`CanActivateChild`、`...

    总结十个Angular.js由浅入深的面试问题

    因此,ng-if更适合用于条件渲染,即当某个条件为真时,页面上才需要渲染的场景,因为这样可以减少不必要的DOM元素,从而提高性能。 2. $rootScope与$scope的区别 在Angular.js中,$rootScope是根作用域,它是所有...

    djangoAngularTaskOrganizer:课程结束后,使用django和angular构建的任务组织器

    9. **部署和测试**:项目完成后,需要在服务器上部署,可能使用Nginx或Apache作为Web服务器,Gunicorn或uWSGI作为Wsgi服务器。同时,单元测试和集成测试确保代码的质量和功能完整性。 综上所述,...

    -lab-07-conditionals

    例如,`if...else`语句用于检查某个条件是否为真,如果为真则执行一段代码,否则执行另一段代码。 2. **条件注释**:在HTML中,尤其是在旧版的Internet Explorer浏览器中,有一种特殊的方式实现条件逻辑,那就是...

    Loop-1---Step-9

    8. **数据绑定**:MVVM(Model-View-ViewModel)模式中,如AngularJS的`ng-repeat`指令,Vue的`v-for`指令,它们在后台数据改变时自动更新视图,实现了数据驱动的循环渲染。 了解并熟练掌握这些HTML与循环相关的...

Global site tag (gtag.js) - Google Analytics