AngularJS入门教程之模块化操作用法示例


Posted in Javascript onNovember 02, 2016

本文实例讲述了AngularJS模块化操作用法。分享给大家供大家参考,具体如下:

在前面几节教程中,代码比较少,为了方便说明问题笔者?⒖刂破鞔?攵夹丛诹?TML页面中,实际上这并不是什么好的编程习惯,而且可维护性差。通常的做法都是?⒋?硪滴衤呒?拇?胄丛谝桓龅ザ赖?S文件中,然后在HTML页面中引入该文件。

然而这样会带来新的问题,我们的控制器全都定义在全局的命名空间中,假设我们有一个公共的JS文件,在登录页面和密码修改页面都引入这个JS,A开发人员和B开发人员英雄所见略同,对控制器的命名都是UserController,这样就会导致命名冲突。而且我们在新增一个控制器的时候总是要担心是不是已经有了一个同名的控制器,代码的扩展性是不是很差呢?

AngularJS中的模块能够很好的解决这个问题,接下来我们看看AngularJs怎么处理命名冲突问题。

代码清单1. tutorial04_1.html

<!DOCTYPE html>
<html ng-app="loginMod">
<head lang="en">
 <meta charset="UTF-8">
 <script type="text/javascript" src="angular-1.3.0.14/angular.js"></script>
 <title>tutorial04_1</title>
</head>
<body>
<div ng-controller="UserController">
 用户名:<input type="text" ng-model="name" placeholder="用户名"/>
 密码:<input type="password" ng-model="pword" placeholder="密码"/>
 <button ng-click="login()">提交</button>
 <p>您输入的用户名:{{name}}</p>
 <p>您输入的密码:{{pword}}</p>
</div>
<script type="text/javascript" src="js/tutorial04.js">
</script>
</body>
</html>

代码清单2. tutorial04_2.html

<!DOCTYPE html>
<html ng-app="pwordMod">
<head lang="en">
 <meta charset="UTF-8">
 <script type="text/javascript" src="angular-1.3.0.14/angular.js"></script>
 <title>tutorial04_2</title>
</head>
<body>
<div ng-controller="UserController">
 密码:<input type="password" ng-model="pword" placeholder="密码"/>
 <button ng-click="changePwrd()">提交</button>
 <p>您输入的密码:{{pword}}</p>
</div>
<script type="text/javascript" src="js/tutorial04.js">
</script>
</body>
</html>

代码清单3. tutorial04.js

var loginMod = angular.module("loginMod", []);
loginMod.controller("UserController",function($scope,$log)
 {
  $scope.name="admin";
  $scope.pword="123456";
  $log.info( $scope.name);
  $log.info( $scope.pword);
  $scope.login = function()
  {
   alert("登录");
  }
 }
);
var pwordMod = angular.module("pwordMod", []);
pwordMod.controller("UserController",function($scope,$log)
 {
  $scope.pword="123456";
  $scope.changePwrd = function()
  {
   alert("修改密码");
  }
 }
);

我们有登录页面tutorial04_1.html和修改密码页面tutorial04_2.html,控制器代码都写在tutorial04.js中,在这两个页面中都定义了相同的控制器UserController。

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

通过这行代码定义模块,第一个参数为模块名。第二个参数是一个数组,为可选,如果指定该参数则创建一个新的模块,不指定则从配置中检索。

loginMod.controller("UserController",function($scope,$log)...

通过controller函数向模块中添加一个控制器,第一个参数为控制器名称,第二个参数为控制器实现部分。

然后在tutorial04_1.html和tutorial04_2.html就可以使用ng-app="loginMod"和ng-app="pwordMod"来指定页面中的控制器属于哪个模块。

在浏览器中运行页面可以看到,不同页面调用不用模块中的UserController控制器:

AngularJS入门教程之模块化操作用法示例

AngularJS入门教程之模块化操作用法示例

AngularJS源码可点击此处本站下载

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 继承详解(三)
Jul 13 Javascript
关于Jqzoom的使用心得 jquery放大镜效果插件
Apr 12 Javascript
JavaScript判断是否为数组的3种方法及效率比较
Apr 01 Javascript
js实现文字超出部分用省略号代替实例代码
Sep 01 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
Sep 23 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
Apr 21 Javascript
js实现微信/QQ直接跳转到支付宝APP打开口令领红包功能
Jan 09 Javascript
Vue中的v-for循环key属性注意事项小结
Aug 12 Javascript
vue的for循环使用方法
Feb 12 Javascript
vue实现直播间点赞飘心效果的示例代码
Sep 20 Javascript
js实现简单的无缝轮播效果
Sep 05 Javascript
vue封装数字翻牌器
Apr 20 Vue.js
js 打开新页面在屏幕中间的实现方法
Nov 02 #Javascript
jQuery图片切换动画特效
Nov 02 #Javascript
用jQuery的AJax实现异步访问、异步加载
Nov 02 #Javascript
AngularJS入门教程之MVC架构实例分析
Nov 01 #Javascript
bootstrap table复杂操作代码
Nov 01 #Javascript
bootstrap flask登录页面编写实例
Nov 01 #Javascript
JS弹出窗口的运用与技巧大全
Nov 01 #Javascript
You might like
15种PHP Encoder的比较
2007/04/17 PHP
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
PHP实现百度人脸识别
2019/05/06 PHP
基于PHP的微信公众号的开发流程详解
2020/08/07 PHP
JQuery 学习技巧总结
2010/05/21 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
Angular2搜索和重置按钮过场动画
2017/05/24 Javascript
获取url中用&amp;隔开的参数实例(分享)
2017/05/28 Javascript
JS判断时间段的实现代码
2017/06/14 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
2020/09/27 Javascript
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
Python标准库之sqlite3使用实例
2014/11/25 Python
使用IronPython把Python脚本集成到.NET程序中的教程
2015/03/31 Python
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
python判断一个对象是否可迭代的例子
2019/07/22 Python
python装饰器练习题及答案
2019/11/01 Python
Gap英国官网:Gap UK
2018/07/18 全球购物
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
ORACLE十问
2015/04/20 面试题
工作时间上网检讨书
2014/02/03 职场文书
迎新晚会主持词
2014/03/24 职场文书
毕业生自荐信如何写
2014/03/24 职场文书
治庸问责工作总结
2015/08/11 职场文书
九年级化学教学反思
2016/02/22 职场文书
整理Python中常用的conda命令操作
2021/06/15 Python
HTML5 语义化标签(移动端必备)
2021/08/23 HTML / CSS
Python如何用re模块实现简易tokenizer
2022/05/02 Python