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 相关文章推荐
javascript 动态修改样式和层叠样式表代码
Apr 27 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
Aug 23 Javascript
jQuery拖拽 &amp; 弹出层 介绍与示例
Dec 27 Javascript
JQuery控制Radio选中方法分析
May 29 Javascript
jquery转盘抽奖功能实现
Nov 13 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
Jan 12 Javascript
js基于setTimeout与setInterval实现多线程
Jun 17 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
Nov 07 Javascript
JS原生数据双向绑定实现代码
Aug 14 Javascript
element el-input directive数字进行控制
Oct 11 Javascript
vue swipe自定义组件实现轮播效果
Jul 03 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
Feb 04 jQuery
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
程序员编程十条戒律
2009/07/09 PHP
phpstorm编辑器乱码问题解决
2014/12/01 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
2019/04/03 PHP
Laravel Validator自定义错误返回提示消息并在前端展示
2019/05/09 PHP
用javascript作一个通用向导说明
2011/08/30 Javascript
基于jquery的拖动布局插件
2011/11/25 Javascript
JS动态创建Table,Tr,Td并赋值的具体实现
2013/07/05 Javascript
node.js使用require()函数加载模块
2014/11/26 Javascript
javascript表格隔行变色加鼠标移入移出及点击效果的方法
2015/04/10 Javascript
关于JavaScript作用域你想知道的一切
2016/02/04 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
Js apply方法详解
2017/02/16 Javascript
详解微信小程序中的页面代码中的模板的封装
2017/10/12 Javascript
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
微信小程序image图片加载完成监听
2019/08/31 Javascript
Vue v-text指令简单使用方法示例
2019/09/19 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
2020/08/10 Javascript
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
Python编码爬坑指南(必看)
2016/06/10 Python
Python从零开始创建区块链
2018/03/06 Python
python移位运算的实现
2019/07/15 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
python输出带颜色字体实例方法
2019/09/01 Python
Python3 io文本及原始流I/O工具用法详解
2020/03/23 Python
python如何运行js语句
2020/09/09 Python
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
红领巾广播站广播稿
2014/02/01 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
企业管理不到位检讨书
2019/06/27 职场文书
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
2021/03/31 Servers
超外差式晶体管收音机的组装与统调
2021/04/22 无线电