全局作用域
在代码中任何地方都能访问到的对象拥有全局作用域,一般来说以下几种情形拥有全局作用域:
(1)最外层函数和在最外层函数外面定义的变量拥有全局作用域
(2)所有末定义直接赋值的变量自动声明为拥有全局作用域
(3)所有window对象的属性拥有全局作用域
作用域链
该内部属性包含了函数被创建的作用域中对象的集合,这个集合被称为函数的作用域链,它决定了哪些数据能被函数访问。
var a = 1;
//全局作用域,只能访问全局变量,也就是a变量
function A(){
var b = 2;
//A函数的局部作用域,可以访问到a,b变量,但是访问不到c变量
function B(){
//B函数局部作用域,可以访问到a,b,c变量
var c = 3;
}
}
function A(){
var arr = [];
function a(){};
function b(){};
return;
}
这样,我们本来需要三个全局变量的问题,就变成了只需要一个
Angular MVC
1. 声明一个ng的应用程序 ngApp
<html ng-app></html> <ng-app></>
2. 创建一个自定义的模块:angular.module("模块名",[依赖列表])
angular.module.("myModule",["ng"]) angular.module()
3. 在应用中注册自定义模块 ng-app="模块名"
<html ng-app="myModule"></html>
4. 在模块中声明Controller
angular.module.("myModule",["ng"]).controller("myContro",function(){
});
5. 在view中指定Controller对象的作用范围-调用控制器创建函数
<div ng-controller="myContro">
{{name}}
</div>
6. 在Controller中声明Modal数据
angular.module.("myModule",["ng"]).controller("myContro",function($scope){
#$scope.name = "gg";
});
AngularJS 双向数据绑定
方向1
Model绑定到View,此后不论何时只要Model发生改变,立即会自动同步更新
实现方法 {{}} ng-bind ngif ngRepeat="变量名 in 数组"...几乎所有的显示数据的指令都实现了方向1的绑定
方向2
view绑定到model,把视图中可以修改的HTML元素,即表单控件的值绑定到模型变量上。此后,只要用户修改了表单控件的值后,后台模型变量的值会立即随之改变
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);
});