AngularJS directive入门例子
这是《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函数的参数:
- scope
这个就是当前control的$scope对象,没啥好说的。 - element
这个是当前dom节点经过“jquery”处理过后的对象。用过jquery的都知道这个概念。当然这边的jquery是angular自己实现的阉割版的jquery。方法少了许多,不过按angular的话说,够用了。 - attrs
这个对象包含,当前的dom节点上的各种属性标签的值。不过要注意的是这边会将xxx-bbb这种形式的改写成xxxBbb的这种驼峰形式。
AngularJS directive入门例子的更多相关文章
- 学习AngularJs:Directive指令用法(完整版)
这篇文章主要学习AngularJs:Directive指令用法,内容很全面,感兴趣的小伙伴们可以参考一下 本教程使用AngularJs版本:1.5.3 AngularJs GitHub: http ...
- AngularJS快速入门指南13:表单
一个AngularJS表单是一组输入型控件的集合. HTML控件 HTML输入型标签标包括: input标签 select标签 button标签 textarea标签 HTML表单 HTML表单将各种 ...
- AngularJS快速入门指南12:模块
AngularJS模块定义了一个application. 模块是一个application中不同部分的容器. application中的所有控制器都应该属于一个模块. 带有一个控制器的模块 下面这个a ...
- AngularJS快速入门指南10:DOM节点
AngularJS通过指令将application数据绑定到HTML DOM元素的属性上. ng-disabled指令 ng-disabled指令将AngularJS application数据绑定到 ...
- AngularJS快速入门指南05:控制器
AngularJS控制器用来控制AngularJS applications的数据. AngularJS控制器就是普通的JavaScript对象. AngularJS控制器 AngularJS app ...
- angularjs directive 实例 详解
前面提到了angularjs的factory,service,provider,这个可以理解成php的model,这种model是不带html的,今天所说的directive,也可以理解成php的mo ...
- 【Bootstrap Demo】入门例子创建
本文简单介绍下如何来使用 Bootstrap,通过引入 Bootstrap,来实现一个最基本的入门例子. 在前一篇博文[Bootstrap]1.初识Bootstrap 基础之上,我们完全可以更加方便快 ...
- AngularJS快速入门指南20:快速参考
thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...
- AngularJS快速入门指南19:示例代码
本文给出的大部分示例都可以直接运行,通过点击运行按钮来查看结果,同时支持在线编辑代码. <div ng-app=""> <p>Name: <input ...
随机推荐
- ServiceStack.OrmLite 笔记
ServiceStack.OrmLite 笔记1 ServiceStack.OrmLite 这个东东就是个orm框架,可以实现类似ef的效果.具体的就不这里班门弄斧了. 支持 SqlServerDia ...
- hdu 2141 (二分)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2141 Can you find it? Time Limit: 10000/3000 MS (Java/O ...
- 2.mybatis入门实例 连接数据库进行查询
1.新建项目,添加mybatis和mysql的jar包 2.在mysql中新建表user[id,name,age] CREATE TABLE `users` ( `id` ) NOT NULL aut ...
- 复制选中的listbox内容
private void lt_log_MouseClick(object sender, MouseEventArgs e) { Clipboard.SetDataObject(lt_log.Sel ...
- Codeforces Round #382 (Div. 2) C. Tennis Championship 斐波那契
C. Tennis Championship time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- hdu 2196 Computer 树的直径
Computer Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem ...
- scala的传名参数
scala如果你想实现像if ,while等类似的控制结构,根本没有值要传入花括号{}直接的代码里.要怎么实现. 比如说,我们要实现一个断言的控制结构,myAssert(), myAssert函数参考 ...
- 转 Cocos网络篇[3.2](3) ——Socket连接(1)
Cocos网络篇[3.2](3) ——Socket连接(1) 2015-03-05 22:24:13 标签:network http socket cocos [唠叨] 在客户端游戏开发中,使用HTT ...
- Python学习笔记13—错误和异常
常见的异常:
- Python学习笔记12—类
典型的类和调用方法: #!/usr/bin/env Python # coding=utf-8 __metaclass__ = type #新式类 class Person: #创建类 def __i ...