先来看一个例子

<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8">
<title>angularJS</title>
<!--angular引用-->
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js" type="text/javascript"></script>
<!-- 控制器js -->
<script src="MyApp.js"></script>
</head>
<body ng-app="AppModule">
<div ng-controller="SayHello">
<span ng-bind="name"></span>
<span ng-bind="say"></span>
</div>
<div ng-controller="NameList">
<ul>
<li ng-repeat="x in nList">
<a ng-bind="x" href="#"></a>
</li>
</ul>
</div>
</body>
</html>
var MyApp = angular.module('AppModule',[]);        // 注册模块

// SayHello控制器
MyApp.controller('SayHello',['$scope',function($scope){
$scope.name = "Jerry";
$scope.say = "Hi! Tom."
}]); // NameList控制器
MyApp.controller('NameList',['$scope',function($scope){
$scope.nList = ['javascript','jQuery','angularjs','vuejs','HTML5','CSS3','nodejs'];
}]);

运行结果

var MyApp = angular.module('AppModule',[]); 用来注册模块,声明一个变量引用angular的module方法,注册一个模块;

angular.module('AppModule',[]); 第一个参数定义模块名;第二个参数引用需要依赖的其他模块(模块名组成的数组)。

MyApp.controller('conName' , ['$scope',function(){  //... ...  }]); 第一个参数定义控制器名称;第二个参数定义控制器内容,数组第一个元素注册scope对象,数组第二个为控制器函数体。

注意:这里的$scope是angular的内置对象并不是普通函数,不可随意命名。

angularjs的controller使用中的注意点

1.不要试图去复用controller,一个控制器一般只负责一小块视图;
2.不要在controller中操作DOM,这不是控制器的职责,在使用中会浪费浏览器资源;
3.不要在controller里面做数据格式化,ng有很好用的表单空间;
4.不要在controller里面做数据过滤,ng有$filter服务;
5.一般controller不要互相调用,控制器之间的交互会通过事件去做交互;

$scope的作用及定义

1.$scope是一个POJO(plain old JavaScript object);
2.$scope提供了一些工具方法$watch()/$apply();
3.$scope是表达式的执行环境;
4.$scope是一个树形结构,与DOM标签平行;
5.子$scope对象会继承父$scope上的属性和方法;
6.每一个angular应用只有一个根$scope对象(位于ng-app上);
7.$scope可以传播事件,类似DOM事件,可以向上向下传播。
8.$scope是angular的基础核心。
9.可以用angular.element($0).scope()进行调试;

angular项目结构

angular项目可在前端实现MVC,angular的mvc与其他后台语言的mvc结构类似;js目录放自定义的controller,framework目录放官方或第三方controller或插件,tpls目录放母版页和视图,node_module目录放第三方或官方node插件。
一般app.js为angular项目入口,类似后台语言的main方法。

angularjs探秘<三> 控制器controller及angular项目结构的更多相关文章

  1. AngularJS进阶(九)控制器controller之间如何通信

    AngularJS控制器controller之间如何通信 注:请点击此处进行充电! angular控制器通信的方式有三种: 1,利用作用域继承的方式.即子控制器继承父控制器中的内容 2,基于事件的方式 ...

  2. 精通AngularJS(三)深入scope,继承结构,事件系统和生命周期

    深入探讨 Scope 作用域 每一个 $scope 都是类 Scope 的一个实例.类 Scope 拥有可以控制 scope 生命周期的方法,提供事件传播的能力,并支持模板渲染. 作用域的层次结构 让 ...

  3. AngularJS进阶(三十九)基于项目实战解析ng启动加载过程

    基于项目实战解析ng启动加载过程 前言 在AngularJS项目开发过程中,自己将遇到的问题进行了整理.回过头来总结一下angular的启动过程. 下面以实际项目为例进行简要讲解. 1.载入ng库 2 ...

  4. AngularJs(五)从Controller控制器谈谈$scope作用域

    大纲 用于简单示例和简单应用的controller 应用 多个controller应用的作用域问题 controller继承作用域问题 Controller的创建 AngularJs controll ...

  5. Angularjs在控制器(controller.js)的js代码中使用过滤器($filter)格式化日期/时间实例

    Angularjs内置的过滤器(filter)为我们的数据信息格式化提供了比较强大的功能,比如:格式化时间,日期.格式化数字精度.语言本地化.格式化货币等等.但这些过滤器一般都是在VIEW中使用的,比 ...

  6. Angularjs 控制器controller的作用

    我们在view中给模型的一个参数name赋值 “hello world” . 这是一种简单的赋值,我们可以在视图中通过 ng 指令(以ng-开头的指令)实现了简单的赋值,如果遇到复杂的逻辑运算操作,那 ...

  7. AngularJS进阶(二十五)requirejs + angular + angular-route 浅谈HTML5单页面架构

    requirejs + angular + angular-route 浅谈HTML5单页面架构 众所周知,现在移动Webapp越来越多,例如天猫.京东.国美这些都是很好的例子.而在Webapp中,又 ...

  8. vuejs angularjs 框架的一些比较(vue项目重构四)

    使用Angularjs和Vue.js对比 首先需要说明的是:现在默认angularjs指angular1.0+版本,angular默认指2.0以上版本.本文的名词也默认指定angular的1.0+版本 ...

  9. Webpack入门——使用Webpack打包Angular项目的一个例子

    2016.1.22,对大多数人来说,这是一个非常平常的日子,但这却是我决定在博客园写博客的日子.虽然注册博客园的博客已有4年8个月,却一直没有动手写过一篇博客,原因是觉得自己水平不行,写不出好东西,所 ...

随机推荐

  1. NET设计模式 第二部分 创建型模式(6):创建型模式专题总结(Creational Pattern)

    创建型模式专题总结(Creational Pattern) ——.NET设计模式系列之七 Terrylee,2006年1月 概述 创建型模式,就是用来创建对象的模式,抽象了实例化的过程.它帮助一个系统 ...

  2. ajaxFileupload 多文件上传

    ajaxFileupload 多文件上传 修改前的代码: var oldElement = jQuery('#' + fileElementId); var newElement = jQuery(o ...

  3. 测试ik分词效果

    POST:   http://192.168.1.12:9200/ddycdr/_analyze?analyzer=ik_max_word body:      {"text":& ...

  4. SourceInsight宏插件1(非常好用,强力推荐)

    对于一直使用sourceinsight编辑C/C++代码的工程师们,sourceinsight是一个非常好用的编辑工具可以任意定位,跳转,回退,本人一直使用该工具做C/C++开发,sourceinsi ...

  5. AI硬件 XPU

    市场对人工智能的热情持续高涨,特别是硬件领域.人工智能将成为下一个大风口,首当其冲的就包括硬件, 在图像语音识别.无人驾驶等人工智能领域的运用层面,图形处理器 (GPU)正迅速扩大市场占比,而谷歌专门 ...

  6. 在 vmware player中安装 ubuntu 17.10

    目录 在 vmware 中安装 ubuntu 17.10 分区参考 vmware安装助手 第一步:更新 安装vmware tools 调整显示 第二步.输入法 五笔输入法 搜狗拼音输入法 ibus不能 ...

  7. C#如何HttpWebRequest模拟登陆,获取服务端返回Cookie以便登录请求后使用

    public static string GetCookie(string requestUrlString, Encoding encoding, ref CookieContainer cooki ...

  8. 《剑指offer(第二版)》面试题55——判断是否为平衡二叉树

    一.题目大意 输入一颗二叉树,判断该二叉树是否为平衡二叉树(AVL树). 二.题解 <剑指offer>上给出了两种解决方式: 1.第一种是从根节点开始,从上往下遍历每个子节点并计算以子节点 ...

  9. 峰Redis学习(4)Redis 数据结构(List的操作)

    第四节:Redis 数据结构之List 类型 存储list: ArrayList使用数组方式 LinkedList使用双向链接方式   双向链接表中增加数据 双向链接表中删除数据   存储list常用 ...

  10. stopPropagation()阻止事件的冒泡传递

    <!doctype html><html><head><meta charset="utf-8"><title>无标题文 ...