基于Angular中ng-controller父子级嵌套的相关属性详解


Posted in Javascript onOctober 08, 2018

ng-controller是为应用变量添加控制器

当有两个控制器father、child且child 在 father内,那child 可以称为子控制器,它将继承父控制器father的scope。child就可以访问到father的scope中的所有函数和变量。

例:

<div ng-controller="father">
 <div >name1:{{ name1 }}</div>
 <div ng-controller="child">name2:{{ name2 }}</div>
</div>

情况1:

app.controller("father",function ($scope) {
 $scope.name1 = "x";
 $scope.name2 = "y";
});

页面显示结果:

name1:x 
name2:y

情况2:

app.controller("child",function ($scope) {
 $scope.name1 = "a";
 $scope.name2 = "b";
});

页面显示结果:

name1: 
name2:b:

情况3:

app.controller("father",function ($scope) {
 if($scope.name1){
  $scope.name1 += "!";
  console.log($scope.name1);
 } else {
  $scope.name1 = "@";
  console.log($scope.name1);
 }

 if($scope.name2){
  $scope.name2 += "#";
  console.log($scope.name2);
 } else {
  $scope.name2 = "$";
  console.log($scope.name2);
 }

 console.log("father");
});
app.controller("child",function ($scope) {
 if($scope.name1){
  $scope.name1 += "%";
  console.log($scope.name1);
 } else {
  $scope.name1 = "^";
  console.log($scope.name1);
 }

 if($scope.name2){
  $scope.name2 += "&";
  console.log($scope.name2);
 } else {
  $scope.name2 = "*";
  console.log($scope.name2);
 }

 console.log("child");
});

控制台打印结果:

@
$
father
@%
$&
child

页面显示结果:

name1:@
name2:$&

可以看出name1的页面显示结果与控制台打印结果不一致

结论:

父级控制器先执行而子级控制器后执行。父级和子级控制器都可对父级下scope作用域进行访问操作,但当子级控制器尝试处理父级作用域内、子级作用域外的数据则可能会导致父级中的数据变脏。

以上这篇基于Angular中ng-controller父子级嵌套的相关属性详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在JavaScript中通过URL传递汉字的方法
Apr 09 Javascript
jQuery实现下拉框左右移动(全部移动,已选移动)
Apr 15 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
Jun 23 Javascript
JavaScript中的splice方法用法详解
Jul 20 Javascript
最丑的时钟效果!js canvas时钟制作方法
Aug 15 Javascript
浅谈js内置对象Math的属性和方法(推荐)
Sep 19 Javascript
JavaScript获取键盘按键的键码(参照表)
Jan 10 Javascript
Vue的土著指令和自定义指令实例详解
Feb 04 Javascript
使用JavaScript实现node.js中的path.join方法
Aug 12 Javascript
js删除数组中某几项的方法总结
Jan 16 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
Jul 08 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
Dec 06 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
Oct 08 #Javascript
angularJs提交文本框数据到后台的方法
Oct 08 #Javascript
详解webpack之图片引入-增强的file-loader:url-loader
Oct 08 #Javascript
在angularJs中进行数据遍历的2种方法
Oct 08 #Javascript
webpack之引入图片的实现及问题
Oct 08 #Javascript
angularJs中json数据转换与本地存储的实例
Oct 08 #Javascript
JS中验证整数和小数的正则表达式
Oct 08 #Javascript
You might like
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
PHP Session变量不能传送到下一页的解决方法
2009/11/27 PHP
提高PHP编程效率 引入缓存机制提升性能
2010/02/15 PHP
PHP依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
Javascript 面向对象 继承
2010/05/13 Javascript
javascript 防止刷新,后退,关闭
2010/08/07 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
javascript数据类型示例分享
2015/01/19 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
JS制作图形验证码实现代码
2020/10/19 Javascript
Angular2安装angular-cli
2017/05/21 Javascript
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
vue项目中定义全局变量、函数的几种方法
2019/11/08 Javascript
JS 创建对象的模式实例小结
2020/04/28 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[57:59]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第一场 11.05
2020/11/05 DOTA
在Django的form中使用CSS进行设计的方法
2015/07/18 Python
python的多重继承的理解
2017/08/06 Python
Python3中关于cookie的创建与保存
2018/10/21 Python
Python实现 版本号对比功能的实例代码
2019/04/18 Python
Python短信轰炸的代码
2020/03/25 Python
判断Threading.start新线程是否执行完毕的实例
2020/05/02 Python
深入了解python列表(LIST)
2020/06/08 Python
斯凯奇美国官网:SKECHERS美国
2016/08/20 全球购物
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
教师节商场活动方案
2014/02/13 职场文书
企业办公室主任岗位职责
2014/02/19 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书