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 相关文章推荐
JS window对象的top、parent、opener含义介绍
Dec 03 Javascript
js加密解密字符串可自定义密码因子
May 13 Javascript
详解VueJs异步动态加载块
Mar 09 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
Jul 11 Javascript
微信小程序数字滚动插件使用详解
Feb 02 Javascript
vue实例中data使用return包裹的方法
Aug 27 Javascript
JavaScript动态检测密码强度原理及实现方法详解
Jun 11 Javascript
jQuery实现可编辑的表格
Dec 11 jQuery
React Hooks 实现和由来以及解决的问题详解
Jan 17 Javascript
JavaScript组合设计模式--改进引入案例分析
May 23 Javascript
5个你不知道的JavaScript字符串处理库(小结)
Jun 01 Javascript
微信小程序实现通讯录列表展开收起
Nov 18 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
Yii Framework框架获取分类下面的所有子类方法
2014/06/20 PHP
PHP实现多图片上传类实例
2014/07/26 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
2016/11/23 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
jquery下checked取值问题的解决方法
2012/08/09 Javascript
jquery ztree异步搜索(搜叶子)实践
2016/02/25 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
AngularJS实现单独作用域内的数据操作
2016/09/05 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
layui table 多行删除(id获取)的方法
2019/09/12 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
Python实现的使用telnet登陆聊天室实例
2015/06/17 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
Python底层封装实现方法详解
2020/01/22 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
python中os.remove()用法及注意事项
2021/01/31 Python
学校元旦晚会方案
2014/02/19 职场文书
行政管理毕业生自荐信
2014/02/24 职场文书
2014统计局民主生活会对照检查材料思想汇报
2014/10/02 职场文书
2014大四本科生自我鉴定总结
2014/10/04 职场文书
税务干部个人整改措施思想汇报
2014/10/10 职场文书
2014年精神文明建设工作总结
2014/11/19 职场文书
2015年财务工作总结范文
2015/03/31 职场文书
社区艾滋病宣传活动总结
2015/05/07 职场文书
电影地道战观后感
2015/06/04 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
手写Spirit防抖函数underscore和节流函数lodash
2022/03/22 Javascript
台积电称即便经济低迷也没有降价的计划
2022/04/21 数码科技
Go中使用gjson来操作JSON数据的实现
2022/08/14 Golang