`

AngularJS之directive指令渲染的顺序

阅读更多

https://stackoverflow.com/questions/38812824


I read document from AngualrJS : https://docs.angularjs.org/guide/component
And when I am reading to "Example of a component tree" section, I got confused about how a component tree's loading works, because there is nowhere to find the loading order.

How angular find the root directive and nested directive (may be in a template)? and Which component should start work first? I mean, If a nested component() is called earlier than its directive's appearance, will it be called later when its directive appears? How angular knows the appropriate component to call when a directive/template load? Or just iterate all components method? Or load all components first, then according index.html to form a component hierarchy, then call it properly?

Is there anybody kindly explain? thanks a lot!




Thanks estus!, your anwser is really helpful! According to
AngularJS : How does the HTML compiler arrange the order for compiling?
https://stackoverflow.com/a/15044832/2893073
and Pete Bacon Darwin's example :


And this comes from :

How directives are compiled
https://docs.angularjs.org/guide/compiler#how-directives-are-compiled






exmaple:

// app.js

angular.module('compilation', [])

.directive('logCompile', function($rootScope) {
  $rootScope.log = "";

  return {
    controller: function($scope, $attrs) {
      $rootScope.log = $rootScope.log + ($attrs.logCompile + ' (controller)\n');
    },
    compile: function compile(element, attributes) {
      $rootScope.log = $rootScope.log + (attributes.logCompile + ' (compile)\n');
      return {
        pre: function preLink(scope, element, attributes) {
          $rootScope.log = $rootScope.log + (attributes.logCompile + ' (pre-link)\n');
        },
        post: function postLink(scope, element, attributes) {
          element.prepend(attributes.logCompile);
          $rootScope.log = $rootScope.log + (attributes.logCompile + ' (post-link)\n');
        }
      };
    }
  };
})

.directive('terminate', function() {
  return {
    terminal: true
  };
});





index.html

<!doctype html>
<html ng-app="compilation">
<head>
  <meta charset="utf-8">
  <title>Compilation Demo</title>
  <link rel="stylesheet" href="style.css">
  <script src="http://code.angularjs.org/1.1.1/angular.js"></script>
  <script src="app.js"></script>
</head>
<body>
<div log-compile="parent">
  <div log-compile="..child 1">
    <div log-compile="....child 1 a"></div>
    <div log-compile="....child 1 b"></div>
  </div>
  <div log-compile="..child 2">
    <div log-compile="....child 2 a"></div>
    <div log-compile="....child 2 b"></div>
  </div>
</div>

<!-- LOG -->
<pre>{{log}}</pre>
</body>
</html>



style.css
div {
  padding: 5px;
  margin: 5px;
  background-color: #EEE;
  border: 1px solid #BBB;
}

div > div {
  background-color: #DDD;
}

div > div > div {
  background-color: #CCC;
}

ol {
  list-style: decimal;
  margin-left: 30px;
}



















-



  • 大小: 213.6 KB
  • 大小: 117.8 KB
分享到:
评论

相关推荐

    AngularJS中的Directive自定义一个表格

    Directive是AngularJS的最小指令性组件,它可以通过添加属性、元素、注释、或者类来改变DOM元素的行为。通过使用Directive,我们可以创建可重用的、可定制的、封装好的代码块。 接下来,文章中提到了创建一个表格的...

    AngularJS中directive指令使用之事件绑定与指令交互用法示例

    主要介绍了AngularJS中directive指令使用之事件绑定与指令交互用法,结合实例形式分析了directive指令在模板的使用,事件的绑定及元素、属性、控制器之间的交互相关操作技巧,需要的朋友可以参考下

    angularjs自定义指令directive正则表达校验

    在AngularJS中,自定义指令(Directives)是框架的核心特性之一,允许开发者扩展HTML语法,创建可重用的UI组件或行为。本教程将深入探讨如何利用AngularJS的自定义指令来实现正则表达式的校验功能,特别是针对HTTP...

    AngularJS中的指令全面解析(必看)

    在学习AngularJS这个流行的前端JavaScript框架时,指令是必须掌握的核心概念之一。AngularJS中的指令允许开发者定义新的HTML标记,并且注入自定义的行为。本文将全面解析AngularJS中的指令,帮助读者理解其在框架中...

    angularjs指令 下拉框

    1. **定义指令**:在AngularJS应用中,使用`angular.module.directive()`来定义一个新的指令。例如: ```javascript angular.module('myApp').directive('customDropdown', function() { return { restrict: 'E'...

    AngularJS 0003: 指令

    它们是AngularJS的核心组成部分,通过指令,开发者可以将业务逻辑与视图层紧密结合,实现数据双向绑定、动态渲染等功能。 **1. 指令的基本结构** AngularJS中的指令通常以`ng-`开头,如`ng-repeat`、`ng-click`等...

    Angularjs使用directive自定义指令实现attribute继承的方法详解

    主要介绍了Angularjs使用directive自定义指令实现attribute继承的方法,结合实例形式较为详细的分析了基于directive自定义指令实现attribute继承的具体步骤与相关技巧,需要的朋友可以参考下

    AngularJS创建自定义指令的方法详解

    1. **定义指令**:使用`.directive()`方法定义一个新的指令,这个方法接受两个参数:指令的名称(作为字符串)和一个指令定义对象。 2. **指令的链接函数**:定义一个链接函数,这是指令的入口点。链接函数负责将...

    angularjs自定义正则表达校验指令directive

    在AngularJS中,自定义指令(Directives)是框架的核心特性之一,允许开发者扩展HTML语法,创建可重用的UI组件或行为。本教程将详细讲解如何创建一个自定义正则表达式校验指令,以实现对用户输入的http链接和纯数字...

    angularjs利用directive实现移动端自定义软键盘的示例

    在本文中,我们将深入探讨如何使用AngularJS的`directive`特性来实现在移动设备上自定义软键盘。AngularJS是一个强大的前端JavaScript框架,它通过`directives`提供了一种方式来扩展HTML,使得我们可以创建自定义的...

    AngularJS 自定义指令 - ECharts 2 雷达图

    在本文中,我们将深入探讨如何在AngularJS框架中创建自定义指令来封装ECharts 2的雷达图。ECharts是一款由百度开发的开源JavaScript图表库,它提供了丰富的可视化图表类型,包括雷达图。AngularJS是一个强大的前端...

    AngularJS-Directive-Controller-Component-Example:简单指令控制器组件示例

    # AngularJS指令/控制器作为组件示例演示Web应用程序,用于显示 , , 集成需要本地Web服务器要正确运行Web应用程序,您需要具有本地Web服务器。 请参阅Git仓库的基本用法要获取母版的本地副本,请执行以下操作: ...

    CanvasJS-AngularJS-Directive:AngularJS的CanvasJS指令

    CanvasJS-AngularJS指令 AngularJS的CanvasJS指令 需要库 安装 将chart.js文件放入您的项目目录 确保此文件包含在HTML标头中 编辑文件chart.js并将angular.module('your-module-here')更改为模块的名称 如下所述调用...

    Angularjs自定义指令Directive详解

    自定义指令(Directive)是AngularJS框架中非常强大的特性之一,它允许开发者创建自己的HTML标签,属性,类或注释,从而定义新的HTML标记,使其具有特定的行为和样式。 在AngularJS中,一个指令就是一个对象,它...

    angularjs-directive-workshop:JSSummit 的简单一步一步的 AngularJS 指令教程

    在这个"angularjs-directive-workshop"中,我们将深入探讨 AngularJS 的指令特性,这些是构建可复用、组件化的前端应用的关键工具。 指令是 AngularJS 的核心特性之一,它们允许我们扩展 HTML,添加自定义的行为和...

Global site tag (gtag.js) - Google Analytics