理解angular中$rootscope和$scope
不难理解, rootscope
var a=1;function fn(a) {a=3; //a是函数的参数}fn(2);console.log(a);//1
var tt = 'aa';
function test(){
alert(tt); //undifined
var tt = 'dd';
alert(tt); //'dd';
}
test();
js分为如下两个过程:
1.编译过程
在js的编译过程中,只是将变量声明和函数声明加到词法作用域,但是不进行赋值,在函数中声明的变量会添加到函数的局部作用域中
2.执行过程
在js的编译过程中,因为js是单线程的所以从上往下执行。
第一个aleart
alert(tt); //undefined
因为在js的编译过程中已经将tt添加到函数的词法环境中,所以在执行时先去函数本身的词法作用域中找是否存在变量tt,因为此时还没有执行var tt = ‘dd’; 所以输出undifined。
下面回到正题
$rootScope针对全局的作用域生效
$scope只针对当前的controller作用域生效
js的代码如下:
var angular=angular.module('myApp',[]);angular.controller('fiscontroller',function ($rootScope,$scope) {$rootScope.message='global'; //message在全局中有效$scope.message1='fiscontroller';});angular.controller('seccontroller',function ($rootScope,$scope) {$scope.message2='seccontroller';console.log($rootScope.message);})
html视图的代码如下:
<html lang="en" ng-app="myApp">
<head><meta charset="UTF-8"><title>Titletitle><script type="text/javascript" src="js/angular.js">script>
head>
<body>
<div>{{message}}div>
<div ng-controller="fiscontroller">{{message1}}
<span>{{message}}span>
div>
<div ng-controller="seccontroller">{{message2}}
<span>{{message}}span>
div>
body>
html>
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
