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刷新框架中的其他页面 &amp;&amp; JS刷新窗口方法汇总
Jul 08 Javascript
使用jquery组件qrcode生成二维码及应用指南
Feb 22 Javascript
纯前端JavaScript实现Excel IO案例分享
Aug 26 Javascript
javascript 将共享属性迁移到原型中去的实现方法
Aug 31 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
Sep 19 Javascript
JavaScript用JSONP跨域请求数据实例详解
Jan 06 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
Jul 13 Javascript
详解tween.js的使用教程
Sep 14 Javascript
js提取中文拼音首字母的封装工具类
Mar 12 Javascript
JS遍历DOM文档树的方法实例详解
Apr 03 Javascript
在小程序中使用腾讯视频插件播放教程视频的方法
Jul 10 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
Aug 20 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
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
采用PHP函数memory_get_usage获取PHP内存清耗量的方法
2011/12/06 PHP
深入解析PHP内存管理之谁动了我的内存
2013/06/20 PHP
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
php内嵌函数用法实例
2015/03/20 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
2016/05/27 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
2017/04/04 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
JS的千分位算法实现思路
2013/07/31 Javascript
jQuery使用post方法提交数据实例
2015/03/25 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
Angular ng-class详解及实例代码
2016/09/19 Javascript
JavaScript 中对象的深拷贝
2016/12/04 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
AngularJS实现自定义指令及指令配置项的方法
2017/11/20 Javascript
Vue中的混入的使用(vue mixins)
2018/06/01 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
原生JS实现拖拽功能
2020/12/16 Javascript
python读取配置文件方式(ini、yaml、xml)
2020/04/09 Python
python多进程使用函数封装实例
2020/05/02 Python
拿来就用!Python批量合并PDF的示例代码
2020/08/10 Python
Python+OpenCV图像处理——实现直线检测
2020/10/23 Python
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
英国床垫和床架购物网站:Bedman
2019/11/04 全球购物
写好自荐信需做到的5要点
2014/03/07 职场文书
车辆工程专业求职信
2014/04/28 职场文书
检讨书模板大全
2015/05/07 职场文书
入党群众意见范文
2015/06/02 职场文书
python基础之//、/与%的区别详解
2022/06/10 Python
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers