使用angular指令可以自己扩展html语法,还可以做很多自定义的事情.在后面会专门讲解这一块的知识,这一篇只是起到了解入门的作用.

与控制器,过滤器,服务,一样,可以通过模块实例的directive的方法来创建指令:

var someModule = angular.module('SomeModule',[]);

someModule.directive('directiveName',function(){

return {

link: function(scope,elements,attrs,controller){

}

}

});

directive传入两个参数:

第一个参数是指令的名字;

第二个参数是一个工厂函数:

函数返回一个对象,对象的link方法的函数有四个参数:

scope:获取外层scope的引用

elements:它所存在的DOM元素

attrs:传递给指令的一个属性数组

controller:DOM元素上的控制器

下面来看个简单的小例子,在html5中,元素有autofocus属性,添加了这个属性的元素,会自动获取焦点.我们可以使用angular来写一个这样的指令:

我们让第二个button在打开的时候就获取焦点,所以按回车就相当于点击了这个按钮:

<!DOCTYPE html>
<html ng-app="AutoFocus">
<head><title>16.1使用指令修改DOM</title><meta charset="utf-8"><script src="../angular.js"></script><script src="script.js"></script><style type="text/css">*{font-family:'MICROSOFT YAHEI';font-size:12px}</style>
</head>
<body>
<div ng-controller="focus"><button ng-click="nofocus()">没有焦点</button><br/><button myautofocus ng-click="hasfocus()">有焦点</button><br/><br/><span>{{text}}</span>
</div>
</body>
</html>

var autoFocus = angular.module('AutoFocus',[]);
autoFocus.controller('focus',function($scope){$scope.text="没有点击任何按钮";$scope.nofocus = function(){$scope.text="没有点击任何按钮";};$scope.hasfocus = function(){$scope.text="点击了有焦点按钮";};
});
autoFocus.directive('myautofocus',function(){return {link: function(scope,elements,attrs,controller){elements[0].focus();}}
});

一.创建模块AutoFocus

二.通过模块的controller方法创建控制器focus

三.通过模块的directive方法创建指令myautofocus

myautofocus的工厂函数就是实现元素自动获取焦点这一功能

效果截图:

打开页面时:

按下回车后:

转载于:https://www.cnblogs.com/minghui007/p/7206144.html

angular学习笔记(十九)-自定义指令修改dom相关推荐

  1. Mr.J-- jQuery学习笔记(十九)--自定义动画实现图标特效

    之前有写过自定义动画Mr.J-- jQuery学习笔记(十八)--自定义动画 这次实现一个小demo 图标特效 页面渲染 <!DOCTYPE html> <html lang=&qu ...

  2. Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法

    Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法 把开发手册理了一遍,发现还有几个点没有记录下来,其中一个就是使用点对的粗对齐和使用参考目标的精确对齐.为了把这个学习笔记凑够 ...

  3. 步步为营 .NET 设计模式学习笔记 十九、Chain of Responsibility(职责链模式)

    概述 在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显示指定,将必不可少地带来请求发送者与接受者的紧耦合. 如何使请求的发送者不需要指定具体的接受者?让请求的 ...

  4. 【theano-windows】学习笔记十九——循环神经网络

    前言 前面已经介绍了RBM和CNN了,就剩最后一个RNN了,抽了一天时间简单看了一下原理,但是没细推RNN的参数更新算法BPTT,全名是Backpropagation Through Time. [注 ...

  5. Mr.J-- jQuery学习笔记(十八)--自定义动画

    animate(params,[speed],[easing],[fn]) 概述 用于创建自定义动画的函数. 这个函数的关键在于指定动画形式及结果样式属性对象.这个对象中每个属性都表示一个可以变化的样 ...

  6. javascript学习笔记(十九) 节点的操作

    包括节点的创建.添加.移除.替换.复制 本节要用到的html例子 1 <ul id="myList"> 2 <li>项目一</li> 3 < ...

  7. angular学习笔记(十四)-$watch(3)

    同样的例子,还可以这样写: <!DOCTYPE html> <html ng-app> <head><title>11.3$watch监控数据变化< ...

  8. 乐优商城学习笔记十九-商品详情(二)

    2.页面静态化 2.1.简介 2.1.1.问题分析 现在,我们的页面是通过Thymeleaf模板引擎渲染后返回到客户端.在后台需要大量的数据查询,而后渲染得到HTML页面.会对数据库造成压力,并且请求 ...

  9. three.js学习笔记(十九)——后期处理

    介绍 后期处理是指在最终图像(渲染)上添加效果.人们大多在电影制作中使用这种技术,但我们也可以在WebGL中使用. 后期处理可以是略微改善图像或者产生巨大影响效果. 下面链接是Three.js官方文档 ...

最新文章

  1. 14、Java Swing星座选择器界面的实现
  2. linux rm 删除所有文件,linux无需rm就可快速删除大量文件
  3. 远程桌面连接数超过最大限制解决方法
  4. Windows下安装部署DBeaver连接clickhouse
  5. maven环境下,控制台中文乱码
  6. 操作系统:第三章 内存管理2 - 详解虚拟内存,页面置换算法,页面分配策略
  7. 如何利用Serilog的RequestLogging来精简ASP.NET Core的日志输出
  8. 面试题4,打印出100-999所有的“水仙花数”。
  9. java的方法是什么用,Java中的本机方法是什么?它们应该在何处使用?
  10. 前端学习(2352):view组件的使用
  11. 1203.1——条件语句 之 if语句
  12. iOS加速计和陀螺仪
  13. 基于NIOS II的1553B总线开发板
  14. 教师语言表达-语言互动
  15. 【转】我公务员工作七年后的肺腑之言
  16. 关键项目遇见瓶颈,你会如何应对?
  17. 电视直播录播系统,多路电视直播录播解决方案
  18. HCNP学习笔记之IP地址、子网掩码、网关的关系
  19. 一加到100分之一c语言,r1c和一加_c语言和c加加的区别_雅马哈r1恐怖加速
  20. 你们期待已久的微信功能,终于要来了

热门文章

  1. powershell电脑加域退域
  2. 【SSH网上商城项目实战20】在线支付平台的介绍
  3. [Android学习笔记]LinearLayout布局,剩余空间的使用
  4. python 没有了matlab的fscanf功能,我该怎么办
  5. 诺基亚5800WIFI设置教程
  6. Machine Monitoring System Document
  7. why is pc important for university students?
  8. 家长对孩子的期望 from father
  9. C# 计时函数精度测试
  10. 【转】D3DLOCK详解