简话Angular 02 Angular控制器-作用域嵌套
一句话: 就是孩子可以啃老,老子不能动孩子一根毛!
* 子控制器有父控制器里变量的所有权限,可以读取,也可以修改.
* 父控制器不能读,也不能修改孩子的变量
1. html代码
<div ng-controller="ParentController">
<h3><strong>父控制器</strong></h3>
<label>姓名: </label> <input type="text" ng-model='person.name'>
<label>年龄: </label> {{person.age}}
<label>职业: </label> {{person.career}}
<label>出生地: </label> {{child.birth}}
<br><label>工作: </label> <input type="text" ng-model="job"> <div ng-controller="ChildController">
<h3><strong>子控制器</strong></h3>
<label>年龄: </label> <input type="text" ng-model='person.age'>
<label>姓名: </label> {{person.name}}
<label>职业: </label> <input type="text" ng-model='person.career'>
<label>出生地: </label> <input type="text" ng-model='child.birth'>
<button ng-click="updateBirth()">更新出生地</button>
<br><label>工作: </label> <input type="text" ng-model="job">
</div>
</div>
2. Javascript代码
<script>
var myApp = angular.module('myApp', []);
myApp.controller('ParentController', function($scope) {
$scope.person = {name: '李三', age: 15}; }); myApp.controller('ChildController', function($scope) {
$scope.child = {}; $scope.updateBirth = function() {
$scope.child.birth = "苏州";
}
});
</script>
3. 源码和查看效果
1) 查看效果: http://jimuyouyou.github.io/angular-bootstrap-rest-seed/examples/angular/2-controller-scope.html
2)源代码: https://github.com/jimuyouyou/angular-bootstrap-rest-seed
3. 解释
一句话: 就是孩子可以啃老,老子不能动孩子一根毛!
* 子控制器有父控制器里变量的所有权限,可以读取,也可以修改.
* 父控制器不能读,也不能修改孩子的变量
1. 父控制器-打开页面就显示姓名, 说明$scope变量值更新了,页面会自动响应
2. 子控制器-打开页面就显示姓名, 说明嵌套控制器也嵌套上下文,子scope可以使用所有父scope的变量(因为儿子里没有person的定义)
3. 修改子控制器的年龄,父控制器年龄也更新, 说明子scope可以改变父scope里边变量的值
4. 修改子控制器的出生地,父控制器没有更新的,说明子scope的变量,父scope无权读取和修改(因为child.birth只在子scope里边)
5. 点击更新出生地,出生地值变化,说明$scope也可以更新html元素值,就是双向绑定
6. 父控制器里输入工作,子控制器跟着显示,说明父子同名变量时,孩子如果为空,可以从父亲那里取-啃老
7. 子控制器时输入工作,父控制器不更新的,说明父子同名变量时,孩子如果有值了,老子拿不到-啃老不敬老
4. 全部源码
<!DOCTYPE html>
<html ng-app='myApp'>
<head>
<meta charset="UTF-8">
<title>2-controller-scope.html</title>
<link rel='stylesheet' href='../../libs/bootstrap3.1.1/css/bootstrap.min.css' />
<script src='../../libs/angular1.3.13/angular.js'></script>
</head>
<body class="container"> <div ng-controller="ParentController">
<h3><strong>父控制器</strong></h3>
<label>姓名: </label> <input type="text" ng-model='person.name'>
<label>年龄: </label> {{person.age}}
<label>职业: </label> {{person.career}}
<label>出生地: </label> {{child.birth}}
<br><label>工作: </label> <input type="text" ng-model="job"> <div ng-controller="ChildController">
<h3><strong>子控制器</strong></h3>
<label>年龄: </label> <input type="text" ng-model='person.age'>
<label>姓名: </label> {{person.name}}
<label>职业: </label> <input type="text" ng-model='person.career'>
<label>出生地: </label> <input type="text" ng-model='child.birth'>
<button ng-click="updateBirth()">更新出生地</button>
<br><label>工作: </label> <input type="text" ng-model="job">
</div>
</div> <br><br>
<div class="bg-info">
<label>
* 子控制器有父控制器里变量的所有权限,可以读取,也可以修改. <p></p>
* 父控制器不能读,也不能修改孩子的变量<p></p>
* <span class="bg-danger">就是孩子可以啃老,老子不能动孩子一根毛!</span>
</label>
<p></p>
1. 父控制器-打开页面就显示姓名, 说明$scope变量值更新了,页面会自动响应 <p></p>
2. 子控制器-打开页面就显示姓名, 说明嵌套控制器也嵌套上下文,子scope可以使用所有父scope的变量(因为儿子里没有person的定义) <p></p>
3. 修改子控制器的年龄,父控制器年龄也更新, 说明子scope可以改变父scope里边变量的值<p></p>
4. 修改子控制器的出生地,父控制器没有更新的,说明子scope的变量,父scope无权读取和修改(因为child.birth只在子scope里边) <p></p>
5. 点击更新出生地,出生地值变化,说明$scope也可以更新html元素值,就是双向绑定<p></p>
6. 父控制器里输入工作,子控制器跟着显示,说明父子同名变量时,孩子如果为空,可以从父亲那里取-啃老<p></p>
7. 子控制器时输入工作,父控制器不更新的,说明父子同名变量时,孩子如果有值了,老子拿不到-啃老不敬老<p></p>
</div> <script>
var myApp = angular.module('myApp', []);
myApp.controller('ParentController', function($scope) {
$scope.person = {name: '李三', age: 15}; }); myApp.controller('ChildController', function($scope) {
$scope.child = {}; $scope.updateBirth = function() {
$scope.child.birth = "苏州";
}
});
</script> </body>
</html>
简话Angular 02 Angular控制器-作用域嵌套的更多相关文章
- angular.js 中的作用域 数据模型 控制器
1.angular.js 作为后起之秀的前端mvc框架,他于传统的前端框架都不同,我们再也不需要在html中嵌入脚本来操作对象了.它抽象出了数据模型,控制器及视图. 成功解耦了应用逻辑,数据模型,视图 ...
- 简话Angular 01 初识Angular 数据绑定
1. Angular有哪些突出优点 1) MVC 基于Html-Javascript 2) 依赖注入 3) 数据双向绑定,响应式页面设计 4) 模块化,自定义指令 2. 简话数据绑定 1) 代码: & ...
- 简话Angular 00 为什么要学Angular
一句话: 现在不学Angular的结局,就和5年前不学JQuery一样! 谁学谁知道,早学早进阶! 1. JQuery vs Javascipt 问两个问题: 1) 你用过JQuery吗?当然! 2) ...
- 简话ASP.NET Web API
简话ASP.NET Web API 在vs2012中,我们很容易在根据选择的ASP.NET MVC Web应用程序来新建一个Web API应用,聪明的你一定想见得到,Web API和MVC有着某种联系 ...
- ASP.NET Core 2.1 Web API + Identity Server 4 + Angular 6 + Angular Material 实战小项目视频
视频简介 ASP.NET Core Web API + Angular 6的教学视频 我是后端开发人员, 前端的Angular部分讲的比较差一些, 可以直接看代码!!!! 这是一个小项目的实战视频, ...
- angular 2 angular quick start Could not find HammerJS
Angular2 的material中 引用了 hammerjs,遇到Could not find HammerJS错误,正确的步骤如下: 需要在如下位置增加 对material 和 hammerjs ...
- C++学习笔记----4.4 继承情况下的类作用域嵌套
引言: 在继承情况下,派生类的作用域嵌套在基类作用域中:如果不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字的定义. 正是这种类作用域的层次嵌套使我们能够直接访问基类的成员,就好像这些成员 ...
- 简话Angular 08 Angular ajax
一句话: 它们Angular框架声明周期的各个阶段,常规约定各专注于特定功能,经过处理也可以互相替换 1.功能细分简解 $http 类似JQuery ajax,支持promise $http.json ...
- 简话Angular 07 Angular config-run-service-factory-provider-constant-value
一句话: 它们Angular框架声明周期的各个阶段,常规约定各专注于特定功能,经过处理也可以互相替换 1.功能细分简解 config Angular module模块的加载阶段-应用在此时还没有启动 ...
随机推荐
- 关于STM32外接4—16MHz晶振主频处理方法
由于STM32F10x库官方采用的是默认的外接8MHz晶振,因此造成很多用户也采用了8MHz的晶振,但是,8MHz的晶振不是必须的,其他频点的晶振也是可行的,只需要在库中做相应的修改就行. 在论 ...
- Eclipse的快捷键使用总结
最近一直在使用Idea开发项目,导致之前一直使用的Eclipse快捷键忘记的差不多了,现在稍微整理了一些,方便以后可以快速切换回来. 常用的Eclipse快捷键总结: Ctrl+S 保存当前正在编辑的 ...
- Python3基础 print \n换行
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- 【第三十二章】 elk(3)- broker架构 + 引入logback
实际中最好用的日志框架是logback,我们现在会直接使用logback通过tcp协议向logstash-shipper输入日志数据.在上一节的基础上修改!!! 一.代码 1.pom.xml 1 &l ...
- 对某项目中Vuex用法的分析
上周五刚发布一个线上版本,趁着新的需求和bug还没到来,决定分析一下正在维护的一个使用Vue 2.0 开发的后台管理系统中Vuex部分代码.这部分代码不是我写的,加上我一直在“使用”现成的而不是“搭建 ...
- Vue开发中的中央事件总线
在Vue开发中会遇到大量的组件之间共享数据的情形,针对不同的情形,Vue有相对应的解决方案.比如,父组件向子组件传值可以使用props,复杂项目中不同模块之间传值可以使用Vuex.但是,对于一些简单的 ...
- substring()的用法和注意事项
作者原创:转载请注明出处 substring()方法的作用为截取字符串,其有两种用法: 分别如下: substring(int beginIndex);这个的作用为截取从beginindex位置处的元 ...
- P4 Tutorials Flowlet Switching
Github链接: Exercise 2: Implementing TCP flowlet switching P4 Tutorials Flowlet Switching 最近P4社区更新了Tut ...
- NS-3 MyFirstScriptExample
安装好了NS-3之后,我根据一些教程学习了NS-3的几个关键的概念,然后照着例子和自己对它的一些理解,尝试的打了我自己的第一个脚本程序:MyFirstScriptExample 具体代码如下: #in ...
- 《剑指offer》第三_二题(不修改数组找出重复的数字)
// 面试题3(二):不修改数组找出重复的数字 // 题目:在一个长度为n+1的数组里的所有数字都在1到n的范围内,所以数组中至 // 少有一个数字是重复的.请找出数组中任意一个重复的数字,但不能修改 ...