AngularJS学习之旅—AngularJS 指令(三)
1、AngularJS 指令
AngularJS 通过被称为 指令 的新属性来扩展 HTML。
AngularJS 通过内置的指令来为应用添加功能。
AngularJS 允许你自定义指令。
2、AngularJS 指令
1.AngularJS 指令是扩展的 HTML 属性,带有前缀 ng-。
2.ng-app 指令初始化一个 AngularJS 应用程序。 ng-app 指令告诉 AngularJS,<div> 元素是 AngularJS 应用程序 的"所有者"。
3.ng-init 指令初始化应用程序数据。 ng-init 指令为 AngularJS 应用程序定义了 初始值。
4.ng-model 指令把元素值(比如输入域的值)绑定到应用程序。
为应用程序数据提供类型验证(number、email、required)。
为应用程序数据提供状态(invalid、dirty、touched、error)。
为 HTML 元素提供 CSS 类。
绑定 HTML 元素到 HTML 表单。
5.ng-repeat 指令会重复一个 HTML 元素 循环 ng-repeat 指令对于集合中(数组中)的每个项会 克隆一次 HTML 元素。
6.自定义指令
你可以使用 .directive 函数来添加自定义的指令。
要调用自定义指令,HTML 元素上需要添加自定义指令名。
使用驼峰法来命名一个指令, runoobDirective, 但在使用它时需要以 - 分割, runoob-directive:
eg:
<!-- 元素名 -->
<runoob-directive></runoob-directive>
<!-- 属性 -->
<div runoob-directive></div>
<!-- 类名 -->
<div class="runoob-directive"></div>
<!-- 注释 -->
<!-- directive: runoob-directive --> var app = angular.module("myApp", []);
app.directive("runoobDirective", function() {
return {
restrict : "A",
template : "<h1>自定义指令!</h1>"
};
});
restrict 值可以是以下几种:
E 作为元素名使用
A 作为属性使用
C 作为类名使用
M 作为注释使用
restrict 默认值为 EA, 即可以通过元素名和属性名来调用指令。
<!DOCTYPE html>
<html> <head>
<meta charset="utf-8">
<script src="js/angular.min.js"></script>
</head> <body>
<div ng-app="myApp" ng-controller="myCtrl">
<!-- 数据绑定 -->
<h2>价格计算器</h2>
数量:
<input type="number" ng-model="quantity"> 价格:
<input type="number" ng-model="price">
<p>
<b>总价:</b> {{ quantity * price }}
</p> <!-- 重复 HTML 元素 ng-repeat 指令会重复一个 HTML 元素-->
<p>使用 ng-repeat 来循环数组</p>
<ul>
<li ng-repeat="x in names">
{{ x }}
</li>
</ul> <!-- 重复 HTML 元素 ng-repeat 指令用在一个对象数组 -->
<p>循环对象:</p>
<ul>
<li ng-repeat="x in datas">
{{ x.name + ', ' + x.country }}
</li>
</ul> <!-- 创建自定义的指令 -->
<!-- 元素名 -->
<runoob-directive></runoob-directive>
<!-- 属性 -->
<div runoob-directive></div>
<!-- 类名 -->
<div class="runoob-directive"></div>
<!-- 注释 -->
<!-- directive: runoob-directive -->
</div>
</body> </html>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function ($scope) {
$scope.firstName = "John";
$scope.lastName = "Doe";
// 数据绑定
$scope.quantity = 10;
$scope.price = 100;
// 重复 HTML 元素 ng-repeat 指令会重复一个 HTML 元素
$scope.names = ['Jani', 'Hege', 'Kai'];
//重复 HTML 元素 ng-repeat 指令用在一个对象数组
$scope.datas = [{
name: 'Jani',
country: 'Norway'
},
{
name: 'Hege',
country: 'Sweden'
},
{
name: 'Kai',
country: 'Denmark'
}
];
});
//创建自定义的指令
app.directive("runoobDirective", function () {
return {
template: "<h1>自定义指令!</h1>"
};
});
</script>

AngularJS学习之旅—AngularJS 指令(三)的更多相关文章
- AngularJS学习之旅—AngularJS 模块(十五)
一.AngularJS 模块 模块定义了一个应用程序. 模块是应用程序中不同部分的容器. 模块是应用控制器的容器. 控制器通常属于一个模块. 1.创建模块 通过 AngularJS 的 angular ...
- AngularJS学习之旅—AngularJS 表达式(二)
1.AngularJS 表达式 AngularJS 表达式写在双大括号内:{{ expression }}. AngularJS 表达式把数据绑定到 HTML,这与 ng-bind 指令有异曲同工之妙 ...
- AngularJS学习之旅—AngularJS 控制器(六)
1.AngularJS 控制器 AngularJS 应用程序被控制器控制. ng-controller 指令定义了应用程序控制器. 控制器是 JavaScript 对象,由标准的 JavaScript ...
- AngularJS学习之旅—AngularJS 表单(十六)
一.AngularJS 表单 AngularJS 表单是输入控件的集合. HTML 控件 以下 HTML input 元素被称为 HTML 控件: input 元素 select 元素 button ...
- AngularJS学习之旅—AngularJS 事件(十四)
1.AngularJS 事件 ng-click ( 适用标签 :所有,触发事件:单击): ng-dblclick( 适用标签 :所有,触发事件:双击): ng-blur(适用标签 : a,input, ...
- AngularJS学习之旅—AngularJS HTML DOM(十三)
1.AngularJS HTML DOM AngularJS 为 HTML DOM 元素的属性提供了绑定应用数据的指令. ng-disabled 指令:ng-disabled 指令直接绑定应用程序数据 ...
- AngularJS学习之旅—AngularJS Table(十一)
1.AngularJS 表格 1. ng-repeat 指令可以完美的显示表格 AngularJS 实例 <!DOCTYPE html> <html> <head> ...
- AngularJS学习之旅—AngularJS 过滤器(七)
1.AngularJS 过滤器 过滤器可以使用一个管道字符(|)添加到表达式和指令中. AngularJS 过滤器可用于转换数据: 过滤器 描述 currency 格式化数字为货币格式. filter ...
- AngularJS学习之旅—AngularJS Scope作用域(五)
1.AngularJS Scope(作用域) Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带. Scope 是一个对象,有可用的方法和属性. Sco ...
随机推荐
- TensorFlow中的通信机制——Rendezvous(一)本地传输
背景 [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 在TensorFlow源码中我们经常能看到一个奇怪的词——Rendezvous ...
- MySQL Router实现MySQL的读写分离
1.简介 MySQL Router是MySQL官方提供的一个轻量级MySQL中间件,用于取代以前老版本的SQL proxy. 既然MySQL Router是一个数据库的中间件,那么MySQL Rout ...
- PAT之气死人不偿命的3n+1猜想
卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在1950年的世界数 ...
- Scrapy爬虫(5)爬取当当网图书畅销榜
本次将会使用Scrapy来爬取当当网的图书畅销榜,其网页截图如下: 我们的爬虫将会把每本书的排名,书名,作者,出版社,价格以及评论数爬取出来,并保存为csv格式的文件.项目的具体创建就不再多讲 ...
- [转]Illuminate Database
本文转自:https://github.com/illuminate/database Illuminate Database The Illuminate Database component is ...
- WPF 故事版例子
Storyboard std = new Storyboard(); DoubleAnimation a = new DoubleAnimation(); a.From =0; a.To =400; ...
- Notepad++ 配置 Sql PoorMan 插件
作用:用来格式化 sql 命令语句 配置方法: Notepad++ 与 PoorMan 插件要版本一致 64对64 32对32 Notepad++ 在 D:\Notepad++\plugins 目录 ...
- asp.net 二级域名表单认证情况下共享Cookie
二级域名之间共享Cookie,很重要的一点就是配置,如下: domain设置为.ahdqxx.com,如果你的域名是www.ahdqxx.com,mall.ahdqxx.com,那么请设置你的doma ...
- C# winform程序怎么打包成安装项目(VS2010图解)
作为研发人员,在本机上开发的winform.wpf或者控制台程序需要发给其他人测试时候,一般需要对其进行打包生成setup安装文件,根据网上查找的资料并结合自己打包成功,记录如下: 注:本程序是一个利 ...
- 浅析多线程的对象锁和Class锁
一.前言 本来想在另外一篇文章说的,发现可能篇幅有点大,所以还是另开一篇博文来说好了.知识参考<Java多线程编程核心技术>,评价下这本书吧——大量的代码,简单的说明,真像在看博客.不过这 ...