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 相关文章推荐
关于COOKIE个数与大小的问题
Jan 17 Javascript
AngularJS的内置过滤器详解
May 14 Javascript
使用控制台破解百小度一个月只准改一次名字
Aug 13 Javascript
关于JSON与JSONP简单总结
Aug 16 Javascript
jquery实现限制textarea输入字数的方法
Sep 06 jQuery
取消Bootstrap的dropdown-menu点击默认关闭事件方法
Aug 10 Javascript
自己动手封装一个React Native多级联动
Sep 19 Javascript
JavaScript实现学生在线做题计时器功能
Dec 05 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
May 07 Javascript
微信小程序scroll-view点击项自动居中效果的实现
Mar 25 Javascript
详解element-ui动态限定的日期范围选择器代码片段
Jul 03 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
Dec 17 Vue.js
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守护进程 加linux命令nohup实现任务每秒执行一次
2011/07/04 PHP
浅谈PHP array_search 和 in_array 函数效率问题
2019/10/15 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
js函数使用技巧之 setTimeout(function(){},0)
2009/02/09 Javascript
jquery模拟按下回车实现代码
2011/09/20 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
JQuery 中几个类选择器的简单使用介绍
2013/03/14 Javascript
jquery文字上下滚动的实现方法
2013/03/22 Javascript
探讨JavaScript语句的执行过程
2016/01/28 Javascript
全面了解函数声明与函数表达式、变量提升
2016/08/09 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
基于Vue开发数字输入框组件
2017/12/19 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
js实现微信聊天效果
2020/08/09 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
[01:57]2018年度DOTA2最具潜力解说-完美盛典
2018/12/16 DOTA
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
浅析python打包工具distutils、setuptools
2018/04/20 Python
pandas 将list切分后存入DataFrame中的实例
2018/07/03 Python
详解Python_shutil模块
2019/03/15 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
一加手机美国官方网站:OnePlus美国
2019/09/19 全球购物
公司营业员的自我评价
2014/03/04 职场文书
百日安全活动总结
2014/05/04 职场文书
产品销售计划书
2014/05/04 职场文书
2014年新教师工作总结
2014/11/08 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
小学数学教学随笔
2015/08/14 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书
利用python做表格数据处理
2021/04/13 Python
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js