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 相关文章推荐
jquery 上下滚动广告
Jun 17 Javascript
使用typeof方法判断undefined类型
Sep 09 Javascript
jQuery实现模拟marquee标签效果
Jul 14 Javascript
基于javascript实现图片预加载
Jan 05 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
Aug 16 Javascript
原生ajax处理json格式数据的实例代码
Dec 25 Javascript
微信小程序 tabs选项卡效果的实现
Jan 05 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
May 18 Javascript
JavaScript实现二维坐标点排序效果
Jul 18 Javascript
限时抢购-倒计时的完整实例(分享)
Sep 17 Javascript
element-ui表格合并span-method的实现方法
May 21 Javascript
vue项目中播放rtmp视频文件流的方法
Sep 17 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一些服务器端特性的配置加强php的安全
2006/10/09 PHP
PHP清除缓存的几种方法总结
2017/09/12 PHP
php的扩展写法总结
2019/05/14 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
2019/10/16 PHP
PHP实现单例模式建立数据库连接的方法分析
2020/02/11 PHP
在Z-Blog中运行代码[html][/html](纯JS版)
2007/03/25 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
jQuery中:focus选择器用法实例
2014/12/30 Javascript
使用bootstrap插件实现模态框效果
2017/05/10 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
使用 vue-i18n 切换中英文效果
2018/05/23 Javascript
JavaScript读写二进制数据的方法详解
2018/09/09 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
2020/08/21 Javascript
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
2019/11/05 Javascript
Python中的ceil()方法使用教程
2015/05/14 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
2016/12/10 Python
对numpy中的where方法嵌套使用详解
2018/10/31 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
2020/04/09 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
C/C++程序员常见面试题一
2012/12/08 面试题
当文件系统受到破坏时,如何检查和修复系统?
2012/03/09 面试题
开业庆典主持词
2014/03/21 职场文书
通信工程求职信
2014/07/16 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
个人对照检查材料思想汇报(四风问题)
2014/09/25 职场文书
小学见习报告
2014/10/31 职场文书
春节慰问简报
2015/07/21 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python
PYTHON InceptionV3模型的复现详解
2022/05/06 Python