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实现计算代码行数的简单方法附代码
Aug 13 Javascript
新浪微博字数统计 textarea字数统计实现代码
Aug 28 Javascript
基于jquery插件实现拖拽删除图片功能
Aug 27 Javascript
从零学习node.js之文件操作(三)
Feb 21 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
Jul 11 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
Jan 11 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
Aug 28 Javascript
如何让node运行es6模块文件及其原理详解
Dec 11 Javascript
JS块级作用域和私有变量实例分析
May 11 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
May 17 Javascript
js抽奖转盘实现方法分析
May 16 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
Aug 20 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
discuz安全提问算法
2007/06/06 PHP
PHP中使用SimpleXML检查XML文件结构实例
2015/01/07 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
2016/10/25 PHP
解javascript 混淆加密收藏
2009/01/16 Javascript
jQuery EasyUI API 中文文档 - Draggable 可拖拽
2011/09/29 Javascript
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
html+css+js实现xp window界面及有关功能
2013/03/26 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
js返回顶部实例分享
2016/12/21 Javascript
微信公众号菜单配置微信小程序实例详解
2017/03/31 Javascript
简单谈谈关于 npm 5.0 的新坑
2017/06/08 Javascript
详解Vue 方法与事件处理器
2017/06/20 Javascript
VUE实现一个分页组件的示例
2017/09/13 Javascript
express+mockjs实现模拟后台数据发送功能
2018/01/07 Javascript
详解使用VueJS开发项目中的兼容问题
2018/08/02 Javascript
jQuery实现鼠标移入移出事件切换功能示例
2018/09/06 jQuery
详解KOA2如何手写中间件(装饰器模式)
2018/10/11 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
vue+elementUi图片上传组件使用详解
2019/08/20 Javascript
js实现鼠标点击页面弹出自定义文字效果
2019/12/24 Javascript
vue3中轻松实现switch功能组件的全过程
2021/01/07 Vue.js
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
python3 实现验证码图片切割的方法
2018/12/07 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
django xadmin action兼容自定义model权限教程
2020/03/30 Python
Lenox官网:精美的瓷器&独特的礼品
2017/02/12 全球购物
90后毕业生的求职信范文
2013/09/21 职场文书
Pytest中conftest.py的用法
2021/06/27 Python
html5调用摄像头实例代码
2021/06/28 HTML / CSS
JavaScript实现外溢动态爱心的效果的示例代码
2022/03/21 Javascript