AngularJS入门教程之AngularJS指令


Posted in Javascript onApril 18, 2016

熟悉HTML的朋友都知道,HTML有很多属性。比如<a>标签的href属性可以来指定链接的URL地址,<input>标签的type属性可以用来指定input的类型。AngularJS指令就是通过扩展HTML的属性来为 AngularJS应用增加功能。

AngularJS指令用于扩展HTML。这些都是先从ng- 前缀的特殊属性。我们将讨论以下指令:

常用AngularJS指令

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

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

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

ng-app指令

ng-app 指令启动一个AngularJS应用。它定义根元素。它会自动初始化或启动加载包含AngularJS应用程序的Web页面的应用程序。它也被用来加载各种AngularJS模块AngularJS应用。在下面的例子中,我们定义默认AngularJS应用使用div元素的ng-app 属性。

<div ng-app="">
...
</div>

ng-init 指令

ng-init 指令初始化一个AngularJS应用程序的数据。它被用来把值在应用程序中使用的变量。在下面的例子中,我们将初始化countries数组。使用JSON语法来定义countries数组。

<div ng-app="" ng-init="countries=[{locale:'en-US',name:'United States'},
{locale:'en-GB',name:'United Kingdom'},
{locale:'en-FR',name:'France'}]">

...
</div>

ng-model指令

ng-model指令定义在AngularJS应用中使用的模型/变量。在下面的例子中,我们定义了一个名为“name”的模型。

<div ng-app="">
...
<p>Enter your Name: <input type="text" ng-model="name"></p>
</div>

ng-repeat 指令

ng-repeat 指令重复html元素集合中的每个项目。在下面的例子中,我们已经迭代了数组countries。

<div ng-app="">
...
<p>List of Countries with locale:</p>
<ol>
<li ng-repeat="country in countries">
{{ 'Country: ' + country.name + ', Locale: ' + country.locale }}
</li>
</ol>
</div>

AngularJS指令示例

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

ng-app 指令告诉 AngularJS当前<div> 元素是 一个AngularJS 的应用程序,ng-init指令用于初始化数据,相当于javascript中的定义变量。AngularJS 中的数据绑定,同步了 AngularJS 表达式与 AngularJS 数据。{{ firstName }} 是通过ng-model="firstName" 进行同步。上面的例子将会在页面上同步显示你在输入框中输入的内容。

注意

一个网页可以包含多个运行在不同元素中的 AngularJS 应用程序。
使用 ng-init 初始化数据并不是很常见。您将在后续章节中学习到一个更好的初始化数据的方式。

ng-repeat 指令

ng-repeat 指令会重复一个 HTML 元素,相当于javascript里的each循环

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

上面的例子中将会解析成下面的HTML

<ul>
<li>Jani</li>
<li>Hege</li>
<li>Kai</li>
</ul>

ng-repeat作用在对象数组上:

<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>

将会解析成下面的HTML:

<ul>
<li>Jani, Norway</li>
<li>Hege, Sweden</li>
<li>Kai, Denmark</li>
</ul>

自定义指令

除了 AngularJS 内置的指令外,我们还可以创建自定义指令。 你可以使用 .directive 函数来添加自定义的指令。 要调用自定义指令,HTMl 元素上需要添加自定义指令名。 使用驼峰法来命名一个指令, askh5Directive, 但在使用它时需要以 - 分割:askh5-directive

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

上面的例子解析成:

<h1>自定义指令!</h1>

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

元素名:<askh5-directive></askh5-directive>

属性:<div askh5-directive></div>

class名:<div class="askh5-directive"></div>

注释:<!-- 指令: askh5-directive -->

restrict限制使用

restrict 值可以是以下几种:

E 只限元素名使用

A 只限属性使用

C 只限类名使用

M 只限注释使用

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

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

上面的AngularJS将只允许属性调用。

相关阅读:

以上内容是小编给大家介绍的AngularJS入门教程之AngularJS指令,希望对大家有所帮助!

Javascript 相关文章推荐
javascript 对象比较实现代码
Apr 27 Javascript
javascript下利用arguments实现string.format函数
Aug 24 Javascript
基于jquery的一行代码轻松实现拖动效果
Dec 28 Javascript
jQuery的运行机制和设计理念分析
Apr 05 Javascript
jquery 回车事件实现代码
Aug 23 Javascript
jQuery EasyUI API 中文文档 - Panel面板
Sep 30 Javascript
关于JS中的闭包浅谈
Aug 23 Javascript
javascript实现数字+字母验证码的简单实例
Feb 10 Javascript
浅谈jQuery hover(over, out)事件函数
Dec 03 Javascript
详解jQuery中的事件
Dec 14 Javascript
js实现类bootstrap模态框动画
Feb 07 Javascript
JavaScript实现tab栏切换效果
Mar 16 Javascript
AngularJS入门教程之AngularJS表达式
Apr 18 #Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
Apr 18 #Javascript
jQuery使用$.each遍历json数组的简单实现方法
Apr 18 #Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
Apr 18 #Javascript
JS中artdialog弹出框控件之提交表单思路详解
Apr 18 #Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
Apr 18 #Javascript
ArtEditor富文本编辑器增加表单提交功能
Apr 18 #Javascript
You might like
php 仿Comsenz安装效果代码打包提供下载
2010/05/09 PHP
php中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
2017/05/26 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
javascript实现的鼠标链接提示效果生成器代码
2007/06/28 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
js文件缓存之版本管理详解
2013/07/05 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
2013/08/29 Javascript
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
js打造数组转json函数
2015/01/14 Javascript
AngularJS的内置过滤器详解
2015/05/14 Javascript
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
一分钟理解js闭包
2016/05/04 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
2017/10/27 jQuery
微信小程序调用天气接口并且渲染在页面过程详解
2019/06/24 Javascript
vue数据更新UI不刷新显示的解决办法
2020/08/06 Javascript
Python内置模块ConfigParser实现配置读写功能的方法
2018/02/12 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
Python3.7安装pyaudio教程解析
2020/07/24 Python
凯特王妃父母建立的派对用品网站:Party Pieces
2017/05/28 全球购物
美国转售二手商品的电子商务平台:BLINQ
2018/12/13 全球购物
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
上班离岗检讨书
2014/01/27 职场文书
学徒工职责
2014/03/06 职场文书
优秀的2014年两会精神解读
2014/03/17 职场文书
美术学专业求职信
2014/07/23 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
放弃继承权公证书
2015/01/23 职场文书
走进毛泽东观后感
2015/06/04 职场文书
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis