1.第一个ng demo

  1. <div ng-app="" ng-init="name='Kevin'">
  2. <input ng-model="name">
  3. <input ng-model="name1">
  4. <label ng-bind="name1"></label>
  5. </div>
  6. <script src="http://apps.bdimg.com/libs/angular.js/1.3.9/angular.min.js"></script>

ng-app=""声明该div是一个ng的app

ng-model="name"声明这个input的值赋给name这个变量名

ng-bind="name1"声明这个lable的值绑定到name这个变量名,label的值会随着name变量的改变而改变

ng-init="name='Kevin';name2='Kevin2'"声明出事变量name='Kevin'

2.表达式

  1. <label>{{ name+' lu' }}</label>

表达式放在两个大括号中,name是变量

ng主要有数字,字符串,对象和数组四种变量

操作和定义的方式和js的方法一样

3.指令

ng-app

ng-module

ng-init

ng-bind

参考上面的demo说明

ng-repeat用于克隆html元素,类似for

  1. <div ng-app="" ng-init="list=[1,2,3,4]">
  2. <table border="1">
  3. <tr><td ng-repeat=" x in list">
  4. {{x+1}}
  5. </td></tr>
  6. </table>
  7. </div>

4.控制器

  1. <div ng-app="myApp" ng-controller="myCtrl">
  2. <input ng-model="name">
  3. <label ng-bind="name"></label>
  4. <label >{{full_name()}}</label>
  5. </div>
  6. <script src="http://apps.bdimg.com/libs/angular.js/1.3.9/angular.min.js"></script>
  7. <script>
  8. var app = angular.module('myApp', []);
  9. app.controller('myCtrl',function($scope){
  10. $scope.name='Kevin';
  11. $scope.full_name=function(){
  12. $scope.name+' LU'
  13. })
  14. })

如果ng-app非空,一定要在script中执行语句var app = angular.module('myApp', []);

ng-controller="myCtrl"声明一个控制器

控制器定义了name变量的初始值为Kevin

控制器里面也可以定义function

5.过滤器

过滤器用于转换数据

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

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

  • lowercase:格式化字符串为小写。

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

  • uppercase:格式化字符串为大写。

    用法

    {{x+1|currency}}

6.Http

http模块用于发起http请求,获取json格式的数据,并对数据进行操作。

  1. <div ng-app="myapp" ng-controller="myCtrl">
  2. <table border="1">
  3. <tr ng-repeat=" x in names">
  4. <td>
  5. {{x.Name}}
  6. </td>
  7. <td>{{x.Country}}</td>
  8. </tr>
  9. </table>
  10. </div>
  11. <script>
  12. var app = angular.module('myapp', [])
  13. app.controller('myCtrl', function ($scope, $http) {
  14. $http.get('http://www.runoob.com/try/angularjs/data/Customers_JSON.php')
  15. .success(function (response) {
  16. $scope.names = response.records;
  17. })
  18. }
  19. )
  20. </script>

由于js的跨域问题,这个demo不能在本地执行,跨域就是js发送http请求给除本网站外的其他域名。

一般的浏览器是不允许跨域访问的。

设想如果可以的话,用户在访问一个网站的时候,这个网站可以用js帮用户访问多个其他的网站,这样一方面会消耗用户的CPU和宽带,另一方面可以提升其他网站的访问量。

PHP中运行跨域header("Access-Control-Allow-Origin: *");

Http官方文档

7.表格

由于有ng-repeat,所以ng中显示表格是非常方便的

下面的例子采用http部分的demo

1.使用orderBy过滤器

  1. <tr ng-repeat=" x in names|orderBy :'Country'">

2.使用序号

  1. <td>
  2. {{$index}}
  3. </td>
  4. <td>
  5. {{x.Name}}
  6. </td>
  7. <td>{{x.Country}}</td>

3.使用even odd

  1. <td ng-if="$odd" style="background-color:blue">
  2. {{$index}}
  3. </td>
  4. <td ng-if="$even" style="background-color:red">
  5. {{$index}}
  6. </td>

如果为奇数,显示蓝色,如果为偶数显示红色。从0开始。

8.HTML DOM

ng-disabled='is_disabled'将改标签的disabled属性绑定到is_disabled变量

ng-show='is_show'将改标签的show属性绑定到is_show变量

ng-hide='is_hide'将改标签的show属性绑定到is_hide变量

  1. <div ng-app="">
  2. <input type="checkbox" ng-model="is_show">
  3. <p ng-show="is_show">is_show</p>
  4. <br>
  5. <input type="checkbox" ng-model="is_hide">
  6. <p ng-hide="is_hide">is_hide</p>
  7. <br>
  8. <input type="checkbox" ng-model="is_disabled">
  9. <button ng-disabled="is_disabled">is_disabled</button>
  10. </div>

9.点击事件

demo:点击按钮,内容会显示或隐藏,按钮的文字也会相应改变

  1. <div ng-app="myapp" ng-controller="myctrl" ng-init="is_show=true;label='隐藏'">
  2. <button ng-click="toggle()">{{ label }}</button>
  3. <p ng-show="is_show">内容</p>
  4. </div>
  5. <script>
  6. var app = angular.module('myapp', [])
  7. app.controller('myctrl', function ($scope) {
  8. $scope.toggle = function () {
  9. $scope.is_show = !$scope.is_show
  10. $scope.label=$scope.is_show?'隐藏':'显示'
  11. }
  12. })
  13. </script>

10.表单

定义一个user对象,然后把表单的内容赋值到对象中

  1. <form ng-app="" ng-init="user={}">
  2. <input ng-model="user.name">
  3. <input ng-model="user.age">
  4. <label >{{user}}</label>
  5. </form>

11.API

  • angular.lowercase() 转换字符串为小写
  • angular.uppercase() 转换字符串为大写
  • angular.isString() 判断给定的对象是否为字符串,如果是返回 true。
  • angular.isNumber() 判断给定的对象是否为数字,如果是返回 true。

用法:

  1. $scope.x2 = angular.isString($scope.x1);

12.包含页面

a.html

  1. <body ng-app="">
  2. <div ng-include="'include_A.html'"></div>
  3. </body>

include_A.html

  1. <p>hello</P>

如果在本地调试,两个html在同一个目录下就可以了。

如果在服务器调试:

test.html:

  1. <body ng-app="">
  2. <div ng-include="'static/include/include_A.html'"></div>
  3. </body>

如果通过URLhttp://www.baidu.com/test 访问到test.html

那么就需要通过URLhttp://www.baidu.com/static/include/include_A.html访问到include_a.html

记住ng-include里面必须包含引号

13.this

在ng-click中,this表示当前的scope作用域

  1. <tr ng-repreat=' item in list'>
  2. <button ng-click=(change())>item.value</button>
  3. $scope.change=function(){
  4. this.item.value='new value'
  5. }

函数里面的this.item.value指向html里面的item.value

14.解析html字符串

如果html字符串是angularJS里面的一个变量,需要把这个变量的Html解析出Html对象,显示到页面中

  1. 在html中

    1. <span ng-bind-html="html_msg"></span>
  2. 对变量进行转换


  1. app.controller('ctrl', function ($scope, $http,$sce) {
  2. $scope.html_msg=$sce.trustAsHtml($scope. html_msg)
  3. })

15.控制器

一个页面可以包含多个控制器,控制器A可以在控制器B里面,也可以在外面例如:

  1. <div ng-include="'include_item.html'" ng-controller="ctrl1">
  2. </div>
  3. <div ng-controller="ctrl2">
  4. <input value="{{test2}}" type="text">
  5. <div ng-include="'include_item.html'" ng-controller="ctrl1">
  6. </div>
  7. </div>
  8. <script type="text/javascript">
  9. var app = angular.module('app', [])
  10. app.controller('ctrl1', function ($scope) {
  11. $scope.test1= 'test1 ctrl1'
  12. $scope.test2= 'test2 ctrl1'
  13. })
  14. app.controller('ctrl2', function ($scope) {
  15. $scope.test1= 'test ctrl2'
  16. $scope.test2 = 'ctrl2 ctrl2'
  17. })
  18. </script>

定义两个控制器,控制器1只会影响控制器1的内容

16.其他

  • controller外面的js语句是修改不了controller中scope里面的值的。

17.总结

angularJS是一个js的库。给我印象最深的就是它的功能相当于Python的模板,也就是可以在html中写脚本,这样生成html就会变得非常灵活,例如可以插入if,for语句等,不同的是Python模板中写的是python,而且在服务器生成好html,而AngularJS是在客户端运行,语言是AngularJS的API

参考文档

参考手册(API)

AngularJS的使用方法的更多相关文章

  1. angularJS通过post方法下载excel文件

    最近工作中遇到,要使用angularJS的post方法来下载excel的情况.网上找到一个帖子:http://stackoverflow.com/questions/22447952/angularj ...

  2. angularJS中$apply()方法详解

    这篇文章主要介绍了angularJS中$apply()方法详解,需要的朋友可以参考下   对于一个在前端属于纯新手的我来说,Javascript都还是一知半解,要想直接上手angular JS,遇到的 ...

  3. angularjs $scope.$apply 方法详解

    myApp.controller('firstController',function($scope,$interval){ $scope.date = new Date(); setInterval ...

  4. AngularJS中的方法参数的问题

    在使用AngularJS开发的过程中出现了如下的问题,一次贴记录下. 感觉也不能说是AngularJS的语法,应该说是JS里面的处理流程应该就是这样子,我现在想通过前端页面传递值到后端(通过方法传递) ...

  5. angularJS之$apply()方法

    这几天,根据buddy指定的任务,要分享一点angular JS的东西.对于一个在前端属于纯新手的我来说,Javascript都还是一知半解,要想直接上手angular JS,遇到的阻力还真是不少.不 ...

  6. angularjs $swipe调用方法

    angularjs 的$swipe,用法: $swipe.bind(angular.element(document),{ start: function(pos) { }, move: functi ...

  7. AngularJS 控制器的方法

    AngularJS 控制器也有方法(变量和函数) <!DOCTYPE html><html><head><meta http-equiv="Cont ...

  8. 优化Angularjs的$watch方法

    Angularjs的$watch相信大家都知道,而且也经常使用,甚至,你还在为它的某些行为感到恼火.比如,一进入页面,它就会调用一次,我明明希望它在我初始化之后,值再次变动才调用.这种行为给我们带来许 ...

  9. Angularjs调用公共方法与共享数据

    这个问题场景是在使用ionic开发页面的过程中发现,多个页面对应的多个controller如何去调用公共方法,比如给ionic引入了toast插件,如何将这个插件的调用变成公共方法或者设置成工具类,因 ...

随机推荐

  1. html页面docutype前面出现字符会导致IE678 margin:0 auto;失效

    html页面<!DOCTYPE html>前面出现字符会导致IE678 margin:0 auto;失效

  2. DataGridView实现倒计时功能(源码)

    需求:最近做一个即时通项目,需要结合OA项目:其中有一个待办事项需要倒计时,准备在DataGridView里展示,如图: 第一步:绑定数据 ; intLoop <= ; intLoop++) { ...

  3. javascript调试 console

    Console命令详解,让调试js代码变得更简单   Firebug是网页开发的利器,能够极大地提升工作效率. 但是,它不太容易上手.我曾经翻译过一篇<Firebug入门指南>,介绍了一些 ...

  4. 常用免费的WebServices地址

    天气预报Web服务,数据来源于中国气象局 公用事业http://www.webxml.com.cn/WebServices/WeatherWebService.asmx 中国股票行情分时走势预览缩略图 ...

  5. WebService地址变成计算机名的解决办法

    WCF 4.0 has solved this issue in some instances with a new config option that use Request Headers: & ...

  6. iOS越狱程序开发

    iOS越狱程序开发http://www.docin.com/p-760246852.html

  7. js原生bind()用法[注意不是jquery里面的bind()]

    <div id="a"> <div></div> <div></div> <div></div> ...

  8. Time complexity analysis of algorithms

    时间复杂性的计算一般而言,较小的问题所需要的运行时间通常要比较大的问题所需要的时间少.设一个程序P所占用的时间为T,则 T(P)=编译时间+运行时间. 编译时间与实例特征是无关的,且可假设一个编译过的 ...

  9. Socket知识总结

    一.网络编程相关概念 1. 互联网通过ip定位电脑 2. 在电脑中通过port定位程序 3. 程序和程序之间通过协议定义通信数据格式 二.Socket相关概念 1. ip地址 1) 每台联网的电脑都有 ...

  10. Android沉浸式状态栏实现

    Step1:状态栏与导航栏半透明化 方法一:继承主题特定主题 在Android API 19以上可以使用****.TranslucentDecor***有关的主题,自带相应半透明效果 例如: < ...