AngularJS入门基础

入门

1.

  AngularJS是一个JavaScript框架,可通过<script>标签添加到HTML页面

  AngularJS通过指令扩展了HTML,且通过表达式绑定数据到HTML

2.

  核心概念之一 -------MVC模型

  Model 表示应用程序核心(比如数据库记录列表)

  View  显示数据(数据库记录)

  Controller 处理输入(写入数据库记录)

表达式

AngularJS使用表达式把数据绑定到HTML

AngularJS表达式写在双大括号内:{{表达式}}

AngularJS可以包含文字,运算符和变量 {{5+5}}

AngularJS指令

1.ng-app:

ng-app指令用于告诉AngularJS应用当前这个元素是根元素

所有AngularJS应用都必须要一个根元素,一个HTML中只声明一个ngApp指令,即一般用于<html>或<body>

严格模式:data-ng-app=""

表达式一般放在标签内部和标签的属性里:<div class="my{{3+2}}">ABC</div>

可以使用 +,-  , * , / , % 等

<p>{{3>1}}</p>

<p>{{10>3?'正确':'错误'}}

2.ng-init:

用于声明模型数据(变量)------initialize,初始(数值,字符串,对象,数组)

使用此指令声明的模型数据可以在整个ng-app范围内使用

补充:声明模型数据,有两种方法

1)使用ng-init指令: 不推荐使用

2)使用ng-controller 和 JS声明:推荐使用

3.ng-bind:

AngularJS使用给定的变量或表达式的值来替换HTML元素的内容

如果给定的变量的或表达式修改了,指定替换的HTML元素也会改变

<div>{{1+2}}</div>

<div ng-bind="1+2"></div>

4.ng-repeat:

用于循环输出指定次数的HTML元素

集合必须是数组或对象

循环体内可使用$index变量,值就是当前元素的下标

<div ng-init="array=[1,2,3];"></div>

<div ng-repeat="a in array">{{a}}</div>

5.ng-model:

ng-model指令可以将输入域的值与AngularJS创建的变量绑定

<div ng-init="sum=30;price=10;number=3"></div>

<input type="text”ng-model="sum"/>

通过改变input的值可以改变sum的值

6.ng-style:

指令为HTML元素添加style属性

ng-style属性值必须是对象,表达式返回的也是对象

对象由css属性和值注册,即key=>value对(键值对)

<html ng-app="myapp">

<body ng-controller="myctrl">或<div( ng-controller="myctrl")></div><h1 ng-style="mystyle">hello</h1></body>

<script>angular.module("myapp",[]).controller("myctrl",function($scope){$scope.mystyle={  键值对  }});</script>

7.ng-src:

指令覆盖了<img>元素的src属性 

使用了AngularJS代码设置图片地址,请使用ng-src指令替代src属性

ng-src指令确保的AngularJS代码执行前不显示图片

 

<html ng-app="myapp">

 

<body ng-controller="myctrl">或<div( ng-controller="myctrl")></div>< h1 ng-style="mystyle">hello</h1></body>

 

<script>angular.module("myapp",[]).controller("myctrl",function($scope){$scope.img="图片路径"});</script>

 

8.AngularJS Scope(作用域)

Scope是应用在HTML (视图)和JavaScript(控制器)之间的纽带

Scope是一个对象,有可用的方法和属性

Scope可应用在视图和控制器上,Scope是模型(Model)

问题:区别根作用域?

所有的应用都有一个$rootScope,可以作用在ng-app指令包含的所有HTML元素中

$rootScope可作用于整个应用中,是各个controller中scope的桥梁,用rootscope定义的值,可以在各个controller中使用

步骤:

1)通过AngularJS的angular.module函数来创建模块

2)使用ng-controller指令来添加应用的控制器

3)设置模型数据

html:<div ng-controller="mycontroll">...</dilv>

JS:

var app=angular.module('模块名',[]);//创建应用程序模块

app.controller('控制器名',function($scope){

    $scope.模型变量名1 = 值1;//设置模型数据

    $scope.模型变量名2 = 值2;//设置模型数据

});

 AngularJS过滤器

过滤器可以通过一个管道字符(|) 和 一个过滤器添加到表达中

currency :格式化数字为货币格式

filter:从数组项中选择一个子集

lowercase : 格式化字符串为小写

orderBy : 根据某个表达式排列数组

uppercase : 格式化字符串为大写

AngularJS服务(Service)

AngularJS中你可以创建自己的服务,或使用内建服务

在AngularJS中,服务是一个函数或对象,可在你的AngularJS应用中使用

AngularJS内建了30多个服务

1)$location服务,它可以返回当前页面的URL地址

2)$http是AngularJS应用中最常用的服务,服务向服务器发送请求,应用响应服务器传送过来的数据

3)$timeout服务对应了JS window.setTimeout函数

4)$interval服务对应了JS window.setInterval函数

5)当你创建了自定义服务,并连接到你的应用上后,你可以在控制器,指令,过滤器或其他服务中使用它

absUrl( ):只读;根据在RFC中指定的规则,返回url,带有所有的片段

<script>

var app = angular.module('myapp',[]);

app.controller('myctrl',function($scope,$location,$timeout){

    $scope.myUrl = $location.absUrl();

    $timeout(function(){

    $scope.change = 'hello';},2000);

});

</script>

AngularJS Http

$http 是 AngularJS中的一个核心服务,用于读取远程服务器的数据

$http.get(url) 是用于读取服务器数据的函数

 angular.module('myapp',[]).controller('myctrl',function($scope,$http){

  $scope.newList=null;

  console.log('页面加载完成,开发发起异步请求,获取服务器端数据...');

  $http({methed:'GET',url:'data/list.json'}).success(function(data){

     $scope.newList=data;   

  });

});

AngularJS HTML DOM

AngularJS为HTMLDOM元素的属性提供了绑定应用数据的指令

1)ng-disabled指令直接绑定应用程序数据到HTML的disabled属性

2)ng-show指令隐藏或显示一个HTML元素

3)ng-hide指令用于隐藏或显示HTML元素

<button ng-disabled="myswitch">点我</button>

<input type="checkbox" ng-model="myswitch"/>按钮

AngularJS双向数据绑定

方向一:

model绑定到view,只要model数据改变,view中也会改变-使用{{}}或ng-bind指令可以实现

此方向的绑定-可以用$interval()验证

方向二:

view输入绑定到model,只要view中的输入改变,model也会改变-使用ng-model指令实现此方向的绑定-可以用$scope.$watch()验证

补充:服务(Service)

1)AngularJS $interval服务对应了JS window.setInterval函数

2)AngullarJS $timeout服务对应了JS window.setTimeout函数

<div ng-controller="myctrl">

  <div>计数器:{{count}}</div>//view跟着model改变

  <input type="text" ng-model="age" /> //model跟着view的改变

</div>

var app=angular.module('myapp',[]);

app.controller('myctrl',function($scope,$interval){

  $scope.count=10;//model数据

  $interval(function(){$scope.count++;},1000);

  $scope.age=1;

  $scope.$watch('age',function(){console.log($scope.age);})

})

AngularJS Bootstrap

可以在AngularJS应用中加入Bootstrap(ng-bind不能显示)引入bootstrap.css

AngularJS包含

使用AngularJS,你可以使用ng-include指令来包含HTML内容

<div ng-include="名字"></div>

$scope.名字="名字.html";

AngularJS路由

AngularJS路由允许我们通过不同的url访问不同的内容

通常的url形式为:http://runoob.com/first/page,但在单页Web应用中AngularJS通过# + 标记实现

在路由中,提供了两个依赖性服务:$location,$routeParams;均可在controller中使用o

1)$location:进行路由跳转

  $location.path('/second');//$window.location.href='';

2)$routeParams:获取路由时所传参数

如何使用ngRoute模块:

1)载入了实现路由的js文件:angular-route.js

2)包含了ngRoute模块作为主应用模块的依赖模块 angular.module('myapp',['ng','ngRoute'])

3)使用ngView指令,来回切换的"伪页面",必须盛放在一个ngView指令中<div ng-view></div>

4)配置$routeProvider,用来定义路由规则

  $routeProvider为我们提供了when(path,object)&otherwise(object)函数按顺序定义所有路由

  <a href='#/ab'>Detail</div>

  <a href='#/hm'>Home</div>

  .config(function($routeProvider){

    $routeProvider

    .when('/ab',{

     templateUrl : 'avrbos.html',controller:'abCtrl'

    }).otherwise({redirectTo:'/hm'})  //其它的请求地址一律映射到/hm路径

  })

参数说明:

  template:在ng-view中插入简单的HTML内容.when('/computers',{template:'这是电脑分类页面'})

  templateUrl:在ng-view中插入HTML模板文件$routeProvider.when('/computers',{templateUrl:'views/computers.html'});

  controller:function.string或数组类型,在当前模板上执行的controller函数,生成新的scope

  controllerAs:string类型,为controller指定别名

  redirectTo:重定向的地址

  resolve:指定当前的controller所依赖的其他模块

 

posted @ 2016-11-11 20:40  全栈派森  阅读(96)  评论(0)    收藏  举报