AngularJS 模块详解及简单实例


Posted in Javascript onJuly 28, 2016

AngularJS 模块

模块定义了一个应用程序。

模块是应用程序中不同部分的容器。

模块是应用控制器的容器。

控制器通常属于一个模块。

创建模块

你可以通过 AngularJS 的 angular.module 函数来创建模块:

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

<script>

var app = angular.module("myApp", []); 

</script>

"myApp" 参数对应执行应用的 HTML 元素。

现在你可以在 AngularJS 应用中添加控制器,指令,过滤器等。

添加控制器

你可以使用 ng-controller 指令来添加应用的控制器:

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="myApp" ng-controller="myCtrl">
{{ firstName + " " + lastName }}
</div>

<script>
var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {
 $scope.firstName = "John";
 $scope.lastName = "Doe";
});
</script>

</body>
</html>

 运行效果:

 John Doe

 你可以在 AngularJS 控制器 章节学到更多关于控制器的知识。

添加指令

AngularJS 提供了很多内置的指令,你可以使用它们来为你的应用添加功能。

完整的指令内容可以参阅 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="myApp" runoob-directive></div>

<script>

var app = angular.module("myApp", []);

app.directive("runoobDirective", function() {
 return {
  template : "我在指令构造器中创建!"
 };
});
</script>

</body>
</html>

 运行结果:

           我在指令构造器中创建! 

 你可以在 AngularJS 指令 章节学到更多关于指令的知识。

模块和控制器包含在 JS 文件中

通常 AngularJS 应用程序将模块和控制器包含在 JavaScript 文件中。

在以下实例中, "myApp.js" 包含了应用模块的定义程序, "myCtrl.js" 文件包含了控制器:

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="myApp" ng-controller="myCtrl">
{{ firstName + " " + lastName }}
</div>

<script src="myApp.js"></script>
<script src="myCtrl.js"></script>

</body>
</html>

 运行结果:

  John Doe

 myApp.js

var app = angular.module("myApp", []);

Note 在模块定义中 [] 参数用于定义模块的依赖关系。

中括号[]表示该模块没有依赖,如果有依赖的话会在中括号写上依赖的模块名字。

myCtrl.js

app.controller("myCtrl", function($scope) {
 $scope.firstName	= "John";
 $scope.lastName= "Doe";
});

 函数会影响到全局命名空间

JavaScript 中应避免使用全局函数。因为他们很容易被其他脚本文件覆盖。

AngularJS 模块让所有函数的作用域在该模块下,避免了该问题。

什么时候载入库?

 注意:在我们的实例中,所有 AngularJS 库都在 HTML 文档的头部载入。

对于 HTML 应用程序,通常建议把所有的脚本都放置在 <body> 元素的最底部。

这会提高网页加载速度,因为 HTML 加载不受制于脚本加载。

在我们的多个 AngularJS 实例中,您将看到 AngularJS 库是在文档的 <head> 区域被加载。

在我们的实例中,AngularJS 在 <head> 元素中被加载,因为对 angular.module 的调用只能在库加载完成后才能进行。

另一个解决方案是在 <body> 元素中加载 AngularJS 库,但是必须放置在您的 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="myApp" ng-controller="myCtrl">
{{ firstName + " " + lastName }}
</div>
<script>
var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {
 $scope.firstName = "John";
 $scope.lastName = "Doe";
});
</script>

</body>
</html>

 运行结果:

John Doe

以上就是对AngularJS 模块资料的整理,后续继续补充,希望能帮助编程的朋友。

Javascript 相关文章推荐
一个对于js this关键字的问题
Jan 09 Javascript
JS实现两个大数(整数)相乘
Apr 28 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
Jun 29 Javascript
node.js文件上传重命名以及移动位置的示例代码
Jan 19 Javascript
angularjs 缓存的使用详解
Mar 19 Javascript
jQuery实现table表格信息的展开和缩小功能示例
Jul 21 jQuery
Node.js log4js日志管理详解
Jul 31 Javascript
chosen实现省市区三级联动
Aug 16 Javascript
JS根据json数组多个字段排序及json数组常用操作
Jun 06 Javascript
微信小程序JS加载esmap地图的实例详解
Sep 04 Javascript
Angular 多模块项目构建过程
Feb 13 Javascript
vue实现单一筛选、删除筛选条件
Oct 26 Javascript
jQuery制作网页版选项卡
Jul 28 #Javascript
AngularJS 中的事件详解
Jul 28 #Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
Jul 28 #Javascript
zepto与jquery的区别及zepto的不同使用8条小结
Jul 28 #Javascript
浅谈js中调用函数时加不加括号的问题
Jul 28 #Javascript
AngularJS 入门教程之HTML DOM实例详解
Jul 28 #Javascript
javascript 小数乘法结果错误的处理方法
Jul 28 #Javascript
You might like
PHP获取http请求的头信息实现步骤
2012/12/16 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
2014/04/25 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
php判断一个数组是否为有序的方法
2015/03/27 PHP
PHP对称加密函数实现数据的加密解密
2016/10/27 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
node.js中的fs.readdir方法使用说明
2014/12/17 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
JS中动态创建元素的三种方法总结(推荐)
2016/10/20 Javascript
angular源码学习第一篇 setupModuleLoader方法
2016/10/20 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
浅谈vue的踩坑路
2017/08/31 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
新手该如何学python怎么学好python?
2008/10/07 Python
分享一个常用的Python模拟登陆类
2015/03/29 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
python binascii 进制转换实例
2019/06/12 Python
Python函数参数类型及排序原理总结
2019/12/19 Python
详解Python利用configparser对配置文件进行读写操作
2020/11/03 Python
CSS3制作炫酷的下拉菜单及弹起式选单的实例分享
2016/05/17 HTML / CSS
爱情检讨书大全
2014/01/21 职场文书
翻译学院毕业生自荐书
2014/02/02 职场文书
四风问题对照检查材料思想汇报
2014/10/07 职场文书
感谢信格式范文
2015/01/22 职场文书
分享7个 Python 实战项目练习
2022/03/03 Python
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android