控制器:在 Angular 中控制器是一个函数,用来向作用域中添加额外的功能。我们用它来给作用域对象设置初始状态,并添加自定义行为。

使用方法: var app = angualr.module('app',[]);

      app.controller('testController',function($scope){

        // do sth here
      })

控制器的嵌套:在整个应用中都会有父级作用域存在,除了孤立作用域以外,所有作用域都通过原型继承而来。他们都可以访问父级作用域。

默认情况下,当 AngularJS 在当前作用域无法找到某个属性时,就会向上寻找,一直追溯到$rootScope,如果最终没有找到,程序会继续运行,但是视图无法更新。

最佳实践:短小精悍,不应在 controller 中过多的操作 DOM 和 数据。复杂的业务逻辑应该放到服务和视图中去。

表达式:在 Angular 中,我们通过{{}}向$scope 上绑定变量的写法本质上就是表达式。当用$watch 进行监听时,Angular 就会对函数或表达式进行运算。

解析表达式:Angular 通过$parse 这个内部服务来解析表达式,$interpolate 服务返回一个函数,用以在特定的上下文中运算表达式。

<div ng-controller="MyController">
<input ng-model="to"
type="email"
placeholder="Recipient" />
<textarea ng-model="emailBody"></textarea>
<pre>{{ previewText }}</pre>
</div>
angular.module('myApp', [])
.controller('MyController', function($scope, $interpolate) {
//
$scope.$watch('emailBody', function(body) { if (body) {
var template = $interpolate(body);
$scope.previewText =
template({to: $scope.to});
}
}; });

AngularJS 笔记系列(四)控制器和表达式的更多相关文章

  1. Java基础复习笔记系列 四 数组

    Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...

  2. 《ASP.NET Core In Action》读书笔记系列四 创建ASP.NET Core 应用步骤及相应CLI命令

    一般情况下,我们都是从一个模板(template)开始创建应用的(模板:提供构建应用程序所需的基本代码).本节使用 Visual Studio 2017 .ASP.NET Core2.0和 Visua ...

  3. AngularJS 笔记系列(三)模块和作用域

    模块: 在 AngularJS 中,将函数代码全部都定义在全局命名空间中绝对不是什么好主意,全局变量污染会使冲突几率变大,调试困难,降低开发效率.上次写计时器的 controller 时,我们把 co ...

  4. AngularJS笔记---作用域和控制器

    什么是作用域. 什么是控制器, 作用域包含了渲染视图时所需的功能和数据,它是所有视图的唯一源头.可以将作用域理解成试图模型(ViewModel). 作用域之间可以是包含关系也可以是独立关系.可以通过设 ...

  5. Python基础笔记系列四:工具的安装与配置

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 一开始是没有打算写工具这篇的,后来发现在某些情况下会遇到一些奇怪的问题,这 ...

  6. Windows-universal-samples学习笔记系列四:Data

    Data Blobs Compression Content indexer Form validation (HTML) IndexedDB Logging Serializing and dese ...

  7. LeetCode 笔记系列四 Remove Nth Node From End of List

    题目:Given a linked list, remove the nth node from the end of list and return its head.For example, Gi ...

  8. AngularJS 笔记系列(五)过滤器 filter

    过滤器是用来格式化给用户展示的数据的. 在 HTML 中的模板绑定符号{{}} 内通过|符号来调用过滤器. 大写:{{ name | uppercase }} 也可以在 JS 中进行调用$filter ...

  9. Python基础笔记系列一:基本工具与表达式

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 工具基础(Windows系统下)传送门:Python基础笔记系列四:工具的 ...

随机推荐

  1. Windows 安装、重装MySQL时,报错:could not start the service mysql

    原因: 卸载mysql时并没有完全删除相关文件和服务,需要手动清除. 解决方法: 首先,在管理工具->服务里面将MySQL的服务给停止(有的是没有安装成功,有这个服务,但是已经停止了的). 然后 ...

  2. 杂文 - 设计MIUI主题 的 MIUI设计师

    设计MIUI主题 的 MIUI设计师 本文地址: http://blog.csdn.net/caroline_wendy 时间: 2014.6.10 By Spike. 1. 首先注冊MIUI设计师: ...

  3. erlang的进程池。

    转自: http://blog.sina.com.cn/s/blog_96b8a1540101542m.html 主要组成部分: https://github.com/devinus/poolboy ...

  4. MD5的各种实现——也是醉了

    MD5即Message-Digest Algorithm 5(信息-摘要算法5).用于确保信息传输完整一致. 是计算机广泛使用的杂凑算法之中的一个(又译摘要算法.哈希算法),主流编程语言普遍已有MD5 ...

  5. uva 610(tarjan的应用)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=23727 思路:首先是Tarjan找桥,对于桥,只能是双向边,而对于 ...

  6. Visio2010如何安装

    双击setup.   点击我接受此协议的条款,然后点击继续.   这里选择自定义,很重要哦,不要选择立即安装,不然,一会装完后,你会找不到快捷方式的.   文件位置这里选择好存放路径,一会我们要去这里 ...

  7. leetcode -- Unique Binary Search Trees todo

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...

  8. Maven clean命令不能执行问题Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project

    执行clean tomcat7:run时Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (de ...

  9. 【BZOJ3417】Poi2013 Tales of seafaring 分层图BFS

    [BZOJ3417]Poi2013 Tales of seafaring Description 一个n点m边无向图,边权均为1,有k个询问 每次询问给出(s,t,d),要求回答是否存在一条从s到t的 ...

  10. 170327、Java微信支付中的扫码支付

    微信支付现在已经变得越来越流行了,随之也出现了很多以可以快速接入微信支付为噱头的产品,不过方便之余也使得我们做东西慢慢依赖第三方,丧失了独立思考的能力,这次打算分享下我之前开发过的微信支付. 一 H5 ...