AngularJS 指令详细介绍


Posted in Javascript onJuly 27, 2016

AngularJS 指令

AngularJS 通过被称为 指令 的新属性来扩展 HTML。

AngularJS 通过内置的指令来为应用添加功能。

AngularJS 允许你自定义指令。

AngularJS 指令

AngularJS 指令是扩展的 HTML 属性,带有前缀 ng-。

ng-app 指令初始化一个 AngularJS 应用程序。

ng-init 指令初始化应用程序数据。

ng-model 指令把元素值(比如输入域的值)绑定到应用程序。

完整的指令内容可以参阅 AngularJS 参考手册。

AngularJS 实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script> 
</head>
<body>

<div ng-app="" ng-init="firstName='John'">

<p>在输入框中尝试输入:</p>
<p>姓名: <input type="text" ng-model="firstName"></p>
<p>你输入的为: {{ firstName }}</p>

</div>

</body>
</html>

 运行结果:

在输入框中尝试输入:

姓名: 

你输入的为: John

 ng-app 指令告诉 AngularJS,<div> 元素是 AngularJS 应用程序 的"所有者"。

注意: 一个网页可以包含多个运行在不同元素中的 AngularJS 应用程序。

数据绑定

上面实例中的 {{ firstName }} 表达式是一个 AngularJS 数据绑定表达式。

AngularJS 中的数据绑定,同步了 AngularJS 表达式与 AngularJS 数据。

{{ firstName }} 是通过 ng-model="firstName" 进行同步。

在下一个实例中,两个文本域是通过两个 ng-model 指令同步的:

AngularJS 实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script> 
</head>
<body>

<div data-ng-app="" data-ng-init="quantity=1;price=5">

价格计算器 

数量: <input type="number" ng-model="quantity">
价格: <input type="number" ng-model="price">

<p><b>总价:</b> {{quantity * price}}</p>

</div>

</body>
</html>

 运行结果:

价格计算器

 数量:  价格: 

总价: 5

注意: 使用 ng-init 不是很常见。您将在控制器一章中学习到一个更好的初始化数据的方式。

重复 HTML 元素

ng-repeat 指令会重复一个 HTML 元素:

AngularJS 实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script> 
</head>
<body>

<div data-ng-app="" data-ng-init="names=['Jani','Hege','Kai']">
 <p>使用 ng-repeat 来循环数组</p>
 <ul>
 <li data-ng-repeat="x in names">
  {{ x }}
 </li>
 </ul>
</div>

</body>
</html>

使用 ng- repeat 来循环数组

  • Jani
  • Hege
  • Kai

 ng-repeat 指令用在一个对象数组上:

AngularJS 实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script> 
</head>
<body>

<div ng-app="" ng-init="names=[
{name:'Jani',country:'Norway'},
{name:'Hege',country:'Sweden'},
{name:'Kai',country:'Denmark'}]">

<p>循环对象:</p>
<ul>
 <li ng-repeat="x in names">
 {{ x.name + ', ' + x.country }}</li>
</ul>

</div>

</body>
</html>

 循环对象:

  • Jani, Norway
  • Hege, Sweden
  • Kai, Denmark

 Note AngularJS 完美支持数据库的 CRUD(增加Create、读取Read、更新Update、删除Delete)应用程序。

把实例中的对象想象成数据库中的记录。

ng-app 指令

ng-app 指令定义了 AngularJS 应用程序的 根元素。

ng-app 指令在网页加载完毕时会自动引导(自动初始化)应用程序。

稍后您将学习到 ng-app 如何通过一个值(比如 ng-app="myModule")连接到代码模块。

ng-init 指令

ng-init 指令为 AngularJS 应用程序定义了 初始值。

通常情况下,不使用 ng-init。您将使用一个控制器或模块来代替它。

稍后您将学习更多有关控制器和模块的知识。

ng-model 指令

ng-model 指令 绑定 HTML 元素 到应用程序数据。

ng-model 指令也可以:

为应用程序数据提供类型验证(number、email、required)。

为应用程序数据提供状态(invalid、dirty、touched、error)。

为 HTML 元素提供 CSS 类。

绑定 HTML 元素到 HTML 表单。

ng-repeat 指令

ng-repeat 指令对于集合中(数组中)的每个项会 克隆一次 HTML 元素。

创建自定义的指令

除了 AngularJS 内置的指令外,我们还可以创建自定义指令。

你可以使用 .directive 函数来添加自定义的指令。

要调用自定义指令,HTML 元素上需要添加自定义指令名。

使用驼峰法来命名一个指令, runoobDirective, 但在使用它时需要以 - 分割, runoob-directive:

AngularJS 实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script> 
</head>
<body>

<body ng-app="myApp">

<runoob-directive></runoob-directive>

<script>
var app = angular.module("myApp", []);
app.directive("runoobDirective", function() {
 return {
  template : "自定义指令!"
 };
});
</script>

</body>

</body>
</html>

 运行结果:

 自定义指令!

你可以通过以下方式来调用指令:

元素名
属性
类名
注释

以下实例方式也能输出同样结果:

元素名

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script> 
</head>
<body>

<body ng-app="myApp">

<runoob-directive></runoob-directive>

<script>
var app = angular.module("myApp", []);
app.directive("runoobDirective", function() {
 return {
  template : "自定义指令!"
 };
});
</script>

</body>

</body>
</html>

 运行结果:

 自定义指令!

属性:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script> 
</head>
<body>

<body ng-app="myApp">

<div runoob-directive></div>

<script>
var app = angular.module("myApp", []);
app.directive("runoobDirective", function() {
 return {
  template : "自定义指令!"
 };
});
</script>

</body>

</body>
</html>

 运行结果:

 自定义指令!

类名:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script> 
</head>
<body ng-app="myApp">

<div class="runoob-directive"></div>

<script>
var app = angular.module("myApp", []);
app.directive("runoobDirective", function() {
 return {
  restrict : "C",
  template : "自定义指令!"
 };
});
</script>

<p><strong>注意:</strong> 你必须设置 <b>restrict</b> 的值为 "C" 才能通过类名来调用指令。</p>

</body>
</html>

 自定义指令!

注意: 你必须设置 restrict 的值为 "C" 才能通过类名来调用指令。

 注释:

 

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script> 
</head>
<body ng-app="myApp">

<!-- directive: runoob-directive -->

<script>
var app = angular.module("myApp", []);
app.directive("runoobDirective", function() {
 return {
  restrict : "M",
  replace : true,
  template : "自定义指令!"
 };
});
</script>

<p><strong>注意:</strong> 我们需要在该实例添加 <strong>replace</strong> 属性, 否则评论是不可见的。</p>

<p><strong>注意:</strong> 你必须设置 <b>restrict</b> 的值为 "M" 才能通过注释来调用指令。</p>

</body>
</html>

  运行结果:

自定义指令!

注意: 我们需要在该实例添加 replace 属性, 否则评论是不可见的。

注意: 你必须设置 restrict 的值为 "M" 才能通过注释来调用指令。

 限制使用

你可以限制你的指令只能通过特定的方式来调用。

实例

通过添加 restrict 属性,并设置只值为 "A", 来设置指令只能通过属性的方式来调用:

实例代码:

<!DOCTYPE html>
<html><head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script> 
</head>
<body ng-app="myApp">

<runoob-directive></runoob-directive>

<div runoob-directive></div>

<script>
var app = angular.module("myApp", []);
app.directive("runoobDirective", function() {
 return {
  restrict : "A",
  template : "自定义指令!"
 };
});
</script>

<p><strong>注意:</strong> 通过设置 <strong>restrict</strong> 属性值为 "A" 来设置指令只能通过 HTML 元素的属性来调用。</p>

</body>
</html>

 运行结果:

 自定义指令!

注意: 通过设置 restrict 属性值为 "A" 来设置指令只能通过 HTML 元素的属性来调用。

 restrict 值可以是以下几种:

E 只限元素名使用
A 只限属性使用
C 只限类名使用
M 只限注释使用

restrict 默认值为 EA, 即可以通过元素名和属性名来调用指令。

 以上就是对AngularJS 指令 资料整理,后续继续补充

Javascript 相关文章推荐
javascript代码加载优化方法
Jan 30 Javascript
实现变速回到顶部的JavaScript代码
May 09 Javascript
如何从jQuery的ajax请求中删除X-Requested-With
Dec 11 Javascript
JS动态增加删除UL节点LI及相关内容示例
May 21 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
Aug 10 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
Oct 30 Javascript
React-Native做一个文本输入框组件的实现代码
Aug 10 Javascript
快速解决vue在ios端下点击响应延时的问题
Aug 27 Javascript
vue-cli webpack 引入swiper的操作方法
Sep 15 Javascript
微信小程序使用npm支持踩坑
Nov 07 Javascript
Vue服务端渲染实践之Web应用首屏耗时最优化方案
Mar 22 Javascript
浅谈node.js中间件有哪些类型
Apr 29 Javascript
js中遍历Map对象的方法
Jul 27 #Javascript
angular.js分页代码的实例
Jul 27 #Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
Jul 27 #Javascript
jquery动态遍历Json对象的属性和值的方法
Jul 27 #Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
Jul 27 #Javascript
js中遍历对象的属性和值的方法
Jul 27 #Javascript
js中的关联数组与普通数组详解
Jul 27 #Javascript
You might like
一个用php实现的获取URL信息的类
2007/01/02 PHP
PHP使用正则表达式清除超链接文本
2013/11/12 PHP
php绘制一条直线的方法
2015/01/24 PHP
浅谈php(codeigniter)安全性注意事项
2017/04/06 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
javascript replace方法与正则表达式
2008/02/19 Javascript
jQuery+css+html实现页面遮罩弹出框
2013/03/21 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
3种vue路由传参的基本模式
2018/02/22 Javascript
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
python的keyword模块用法实例分析
2015/06/30 Python
将Emacs打造成强大的Python代码编辑工具
2015/11/20 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
python用户管理系统的实例讲解
2017/12/23 Python
Django认证系统user对象实现过程解析
2020/03/02 Python
浅谈python多线程和多线程变量共享问题介绍
2020/04/17 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
Python如何使用神经网络进行简单文本分类
2021/02/25 Python
美国迪克体育用品商店:DICK’S Sporting Goods
2018/07/24 全球购物
财务管理专业毕业生求职信范文
2013/09/21 职场文书
《乞巧》教学反思
2014/02/27 职场文书
医疗专业毕业生求职信
2014/08/28 职场文书
2015年元旦主持词结束语
2014/12/14 职场文书
爱晚亭导游词
2015/02/09 职场文书
财政局个人总结
2015/03/04 职场文书
2015年大学生入党自荐书
2015/03/24 职场文书
储备店长岗位职责
2015/04/14 职场文书
保护环境的宣传语
2015/07/13 职场文书
企业培训简报范文
2015/07/20 职场文书