全局作用域
在代碼中任何地方都能訪問(wèn)到的對(duì)象擁有全局作用域,一般來(lái)說(shuō)以下幾種情形擁有全局作用域:
(1)最外層函數(shù)和在最外層函數(shù)外面定義的變量擁有全局作用域
(2)所有末定義直接賦值的變量自動(dòng)聲明為擁有全局作用域
(3)所有window對(duì)象的屬性擁有全局作用域
作用域鏈
該內(nèi)部屬性包含了函數(shù)被創(chuàng)建的作用域中對(duì)象的集合,這個(gè)集合被稱(chēng)為函數(shù)的作用域鏈,它決定了哪些數(shù)據(jù)能被函數(shù)訪問(wèn)。
var a = 1;
//全局作用域,只能訪問(wèn)全局變量,也就是a變量
function A(){
var b = 2;
//A函數(shù)的局部作用域,可以訪問(wèn)到a,b變量,但是訪問(wèn)不到c變量
function B(){
//B函數(shù)局部作用域,可以訪問(wèn)到a,b,c變量
var c = 3;
}
}
function A(){
var arr = [];
function a(){};
function b(){};
return;
}
這樣,我們本來(lái)需要三個(gè)全局變量的問(wèn)題,就變成了只需要一個(gè)
Angular MVC
1. 聲明一個(gè)ng的應(yīng)用程序 ngApp
<html ng-app></html> <ng-app></>
2. 創(chuàng)建一個(gè)自定義的模塊:angular.module("模塊名",[依賴(lài)列表])
angular.module.("myModule",["ng"]) angular.module()
3. 在應(yīng)用中注冊(cè)自定義模塊 ng-app="模塊名"
<html ng-app="myModule"></html>
4. 在模塊中聲明Controller
angular.module.("myModule",["ng"]).controller("myContro",function(){
});
5. 在view中指定Controller對(duì)象的作用范圍-調(diào)用控制器創(chuàng)建函數(shù)
<div ng-controller="myContro">
{{name}}
</div>
6. 在Controller中聲明Modal數(shù)據(jù)
angular.module.("myModule",["ng"]).controller("myContro",function($scope){
#$scope.name = "gg";
});
AngularJS 雙向數(shù)據(jù)綁定
方向1
Model綁定到View,此后不論何時(shí)只要Model發(fā)生改變,立即會(huì)自動(dòng)同步更新
實(shí)現(xiàn)方法 {{}} ng-bind ngif ngRepeat="變量名 in 數(shù)組"...幾乎所有的顯示數(shù)據(jù)的指令都實(shí)現(xiàn)了方向1的綁定
方向2
view綁定到model,把視圖中可以修改的HTML元素,即表單控件的值綁定到模型變量上。此后,只要用戶(hù)修改了表單控件的值后,后臺(tái)模型變量的值會(huì)立即隨之改變
Html:
名字: <input type="text" ng-model="name"/> <span>{{name}}</span>
密碼: <input type="text" ng-model="password"/> <span>{{password}}</span>
JS:
angular.module("myModule",["ng"]).controller("contro",function($scope){
$scope.$watch("name+password",function(){
console.log($scope.name);
console.log($scope.password);
});