这是《AngularJS》这本书里面提供的一个例子:

JS代码:

var expanderModule=angular.module('expanderModule', [])
expanderModule.directive('expander', function() {return {restrict : 'EA',replace : true,transclude : true,scope : {title : '=expanderTitle'},template : '<div>'+ '<div class="title" ng-click="toggle()">{{title}}</div>'+ '<div class="body" ng-show="showMe" ng-transclude></div>'+ '</div>',link : function(scope, element, attrs) {scope.showMe = false;scope.toggle = function toggle() {scope.showMe = !scope.showMe;}}}
});
expanderModule.controller('SomeController',function($scope) {$scope.title = '点击展开';$scope.text = '这里是内部的内容。';
});

HTML代码:

<html ng-app='expanderModule'><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><script src="../angular-1.0.3/angular.min.js"></script><link rel="stylesheet" type="text/css" href="ExpanderSimple.css"/></head><body><div ng-controller='SomeController'><expander class='expander' expander-title='title'>{{text}}</expander></div></body><script src="ExpanderSimple.js"></script>
</html>

CSS代码:

.expander {border: 1px solid black;width: 250px;
}.expander>.title {background-color: black;color: white;padding: .1em .3em;cursor: pointer;
}.expander>.body {padding: .1em .3em;
}

运行效果如下:

compile阶段进行标签解析和变换,link阶段进行数据绑定等操作!

在所有module都装载完毕在之后,compile(element)(scope);开始编译和链接整个dom树(其实就是调用dom上出现的指令)。

第一步:传递应用根节点给$compile函数,开始编译,返回link函数。

第二步:传递根作用域给link函数,开始链接(每个指令分为pre link 和 post link两个过程)

link函数的参数:

  1. scope
    这个就是当前control的$scope对象,没啥好说的。
  2. element
    这个是当前dom节点经过“jquery”处理过后的对象。用过jquery的都知道这个概念。当然这边的jquery是angular自己实现的阉割版的jquery。方法少了许多,不过按angular的话说,够用了。
  3. attrs
    这个对象包含,当前的dom节点上的各种属性标签的值。不过要注意的是这边会将xxx-bbb这种形式的改写成xxxBbb的这种驼峰形式。

转载于:https://www.cnblogs.com/bonelee/p/6202596.html

AngularJS directive入门例子相关推荐

  1. angularjs directive 实例 详解

    angularjs directive 实例 详解 张映 发表于 2014-03-13 前面提到了angularjs的factory,service,provider,这个可以理解成php的model ...

  2. Cassandra 单机入门例子——有索引

    入门例子: http://wiki.apache.org/cassandra/GettingStarted 添加环境变量并source生效,使得可以在任意位置执行cassandra/bin安装目录下的 ...

  3. spark streaming 入门例子

    spark streaming 入门例子: spark shell import org.apache.spark._ import org.apache.spark.streaming._sc.ge ...

  4. 图解VC++2012编译安装GDAL1.11.0和入门例子

    相关下载 http://pan.baidu.com/s/1o7OEMc6 gdal1.rar - 入门例子 GDAL书籍代码及数据.rar gdal1110.zip - 下载的源码 GDAL.rar ...

  5. AngularJS快速入门指南09:SQL

    我们可以将之前章节中的代码用来从数据库中读取数据. 通过PHP Server从MySQL数据库中获取数据 <div ng-app="myApp" ng-controller= ...

  6. Orleans入门例子

    Orleans是微软开源的分布式actor模型框架.actor模型的原理网络上有很多文章.有许多理论性的文章,深刻地我都不知道怎么应用.在这里我就不赘述了.既然是博客,就说说自己的理解. 对于编程来说 ...

  7. AngularJS快速入门指南03:表达式

    AngularJS通过表达式将数据绑定到HTML. AngularJS表达式 AngularJS表达式写在双大括号中:{{ 表达式语句 }}. AngularJS表达式绑定数据到HTML的方式与ng- ...

  8. AngularJS快速入门指南15:API

    API即Application Programming Interface(应用程序接口). AngularJS全局API AngularJS全局API是一组全局JavaScript函数,用来进行一些 ...

  9. Orleans 初接触(一) 入门例子

    [返回导航] 在简单了解了Orleans 之后我们可以通过几个例子去加深印象 一.Orleans入门例子 这个例子是跟着<Orleans入门例子>(https://www.cnblogs. ...

最新文章

  1. ubuntu修改主机名后无法解析主机
  2. dmidecode 命令详解(获取硬件信息)
  3. python 3.10 新增 switch-case 简介
  4. 静态程序分析chapter4 - 基于格(Lattice)理论的数据流分析
  5. POJ 1753 Flip Game (黑白棋) (状态压缩+BFS)
  6. RuntimeError: Cannot run the event loop while another loop is running
  7. 如何找到 SAP 电商云 Spartacus UI 导航 navigation 的驱动器 - NavigationEntryItemEffects
  8. 简述中断处理的6个步骤_微机原理67章答案
  9. 在线CSS美化格式化工具
  10. 如果您能天天读上一遍,就能和老外对话了!
  11. Moonlight 串流分辨率设置
  12. STM32F103学习笔记(7)——ISP串口下载程序
  13. 2021年认证杯-数学建模
  14. ES 索引mapping之keyword;term查询添加keyword查询;更改mapping keyword类型
  15. 网吧游戏二层更新linux,图文细说网吧游戏更新软件【处理手段】
  16. 论智能的起源、进化与未来
  17. NY145 聪明的小柯
  18. 2021西湖论剑misc——Yusa的小秘密
  19. HDU6357 Hills And Valleys
  20. HDUOJ 6441 Find Integer

热门文章

  1. 页面加载速度优化的12个建议
  2. c mysql批量插入优化_MySQL实现批量插入以优化性能的教程
  3. mysql error 1594_MySQL 1594 异常解决办法
  4. python人工智能算法很难_为什么AI很火,但是落地很难?
  5. python保存至对应目录_python如何实现复制目录到指定目录
  6. 论述Linux文件系统,linux文件系统概述
  7. Android开发究竟该如何学习,重难点整理
  8. 【深度学习】CNN在大规模图像数据集上的应用(基于keras和MNIST)
  9. 基于macos的Homebrew常用命令和使用教程(你得看❤️)
  10. python【数据结构与算法】计数问题(分治)