什么是 angularjs

2009年有两个外国人创建,后由谷歌收购并开源。 
他的特点有MVC、模块化、双向数据绑定、语义化标签、依赖注入等。 
AngularJS主要考虑的是构建CRUD应用,90%的应用都是CRUD应用,游戏,图形界面编辑器,这种DOM操作很频繁也很复杂的应用不合适他做。 
CRUD(增加Create、读取Read、更新Update、删除Delete)

安装

  • 引入 angular.js
  • 在 html 标签上添加 ng-app=””

入门规则

  • angularjs 中对数组,对象的获取方法和以前不同,数组是用下标,对象通过点(.)来获取。
  • ng-init 指定可以定义多个变量,每个变量由分号分开,先从标签内找变量,如果找不到,进行全局查找,都找不到也不报错。

    <div>{{b}}</div>
    <div ng-init="a=1;b=2;">{{a}}</div>
  • {{}} 是双向数据绑定的一种方式,里面写的是需要得到的变量名称。这种方式叫双括号插值法。另一种方式是 ng-bind=”“ 引号里写想要的变量。建议使用 ng-bind ,避免没有被渲染的模块提前暴露在页面上。

  • ng-model 是把元素的值绑定相应的应用程序,和 ng-bind 合作即双向数据绑定。

    • 双向数据绑定:
    <input ng-model="val">
    <div ng-bind="val"></div>
    • 双向数据绑定并设置初始值:
    水:<input ng-model="a" ng-init="a=10">元/瓶<br>
    数量:<input ng-model="b" ng-init="b=1"><br>
    合计:<span ng-bind="a*b"></span>元
  • ng-repeat 遍历并渲染到页面上。

    <ul ng-init="aa=[1,3,5,2]">
    <li ng-repeat="i in aa" ng-bind="i"></li>
    </ul>
  • ng-click 定义点击事件,以下代码点击1次加1。

    <button ng-init="a=1" ng-click="a=a+1" ng-bind="a"></button>
  • ng-hide=”true” 设置元素不可见。

  • ng-show=”true” 设置元素可见。

    <button ng-init="a=true" ng-click="a=!a">点击</button>
    <div ng-show="a">显示/隐藏</div>

控制器

  • ng-controller 定义控制器。每创建一次,就会生成一个 对象,这个对象的功能负责把控制器和关联在一起,每个控制器间互不影响,scope可以像变量一样在作用域间传递和使用。

    • 高版本的控制器不能直接在 js 中定义。
  • ng-app=”” 静态的指令,直接启动。如果有多个,只启动第一个。如果加在某 div 上,表示这个 div 标签内有效。还有一种动态的让 angularjs 运行的方式,在 js 中写 angula.bootstrap(启动对象,导入时载入的模块)。

通过 angularjs 来控制 dom 元素,是通过 angularjs 内置的一个精简版的 jquery-jqlite ; 使他可以像 jq 一样进行 dom 操作。 jqlite 是 angular.element 提供出来的,和 jq 操作差不多,只不过不能使用 this 。并且不能直接获取 dom 元素,如果通过标签名查找的话可通过 angular.element(document).find('标签名') 查找。

  • 以下代码没有使用 ng-app,使用的是 angular.bootstrap 动态启动 angular

    <!DOCTYPE html>
    <html lang="en">
    <meta charset="UTF-8">
    <button id="btn">点击</button>
    <script src="angular1.min.js"></script>
    <script>
    angular.element(document).ready(function(){
    var btn=document.getElementById('btn');
    angular.element(btn).on('click',function(){
    alert(1);
    });
    angular.bootstrap(btn,[]);
    })
    </script>
    </body>
    </html>
  • 控制器在 1.3.0-beta.15 以上不再支持全局的 Controller 。以下代码使用的是 1.3.0-beta.14 版本,如果使用 1.3.0-beta.15 会报错。 
    因为从Angular-1.3.0 beta15开始,Angular不再支持全局的Controller!

    <!DOCTYPE html>
    <html ng-app="">
    <head>
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <div ng-controller="fn">
    姓名:<input type="text" ng-model="aa"><br>
    <input type="button" value="问候" ng-click="tap()">
    <div ng-init="name" ng-bind="name"></div>
    </div>
    </body>
    <script src="http://cdn.bootcss.com/angular.js/1.3.0-beta.14/angular.min.js"></script>
    <script>
    function fn($scope){
    $scope.tap=function(){
    $scope.name="hello"+$scope.aa
    }
    }
    </script>
    </html>
  • 使用 module 实现控制器。

    <!DOCTYPE html>
    <html lang="en">
    <meta charset="UTF-8">
    <body>
    <div id="bo" ng-controller="mycontroller" ng-bind="msg"></div>
    <script src="angular1.min.js"></script>
    <script>
    var myApp=angular.module('aa',[]) //1 定义模块,注入需要的服务
    var element=angular.element(document.getElementById('bo')); //获取元素
    var aa=function($scope){ //2 里面发生的事,通过 $scope 控制
    $scope.msg='hi';
    }
    myApp.controller('mycontroller',aa); //3 通过控制器调用模块
    angular.bootstrap(element,['aa']); //4 运行 angular
    </script>
    </body>
    </html>

自定义指令

  1. 让 html 更有语义,不需要深入研究代码和逻辑,就可知道页面的大致逻辑。
  2. 抽象一个自定义的组件,在其他地方可以重用。

    <!DOCTYPE html>
    <html lang="en">
    <meta charset="UTF-8">
    <body>
    <mytag ng-app="myApp"></mytag>
    <script src='angular1.min.js'></script>
    <script>
    var myApp = angular.module("myApp", []);
    myApp.directive("mytag", function() {
    return {
    template : "<h1>自定义指令!</h1>"
    };
    });
    </script>
    </body>
    </html>

MD:

- 2017-03-23
- 本文更新链接: http://www.cnblogs.com/daysme ## 什么是 angularjs
2009年有两个外国人创建,后由谷歌收购并开源。
他的特点有MVC、模块化、双向数据绑定、语义化标签、依赖注入等。
AngularJS主要考虑的是构建CRUD应用,90%的应用都是CRUD应用,游戏,图形界面编辑器,这种DOM操作很频繁也很复杂的应用不合适他做。
*CRUD(增加Create、读取Read、更新Update、删除Delete)*
## 安装
- 引入 angular.js
- 在 html 标签上添加 ng-app="" ## 入门规则
- angularjs 中对数组,对象的获取方法和以前不同,数组是用下标,对象通过点(.)来获取。
- ng-init 指定可以定义多个变量,每个变量由分号分开,先从标签内找变量,如果找不到,进行全局查找,都找不到也不报错。 ```
<div>{{b}}</div>
<div ng-init="a=1;b=2;">{{a}}</div>
``` - **{{}}** 是双向数据绑定的一种方式,里面写的是需要得到的变量名称。这种方式叫双括号插值法。另一种方式是 **ng-bind=""** 引号里写想要的变量。建议使用 ng-bind ,避免没有被渲染的模块提前暴露在页面上。
- ng-model 是把元素的值绑定相应的应用程序,和 ng-bind 合作即双向数据绑定。
- 双向数据绑定: ```
<input ng-model="val">
<div ng-bind="val"></div>
``` - 双向数据绑定并设置初始值: ```
水:<input ng-model="a" ng-init="a=10">元/瓶<br>
数量:<input ng-model="b" ng-init="b=1"><br>
合计:<span ng-bind="a*b"></span>元
``` - ng-repeat 遍历并渲染到页面上。 ```
<ul ng-init="aa=[1,3,5,2]">
<li ng-repeat="i in aa" ng-bind="i"></li>
</ul>
``` - ng-click 定义点击事件,以下代码点击1次加1。 ```
<button ng-init="a=1" ng-click="a=a+1" ng-bind="a"></button>
``` - ng-hide="true" 设置元素不可见。
- ng-show="true" 设置元素可见。 ```
<button ng-init="a=true" ng-click="a=!a">点击</button>
<div ng-show="a">显示/隐藏</div>
``` ## 控制器
- ng-controller 定义控制器。每创建一次,就会生成一个 $scope 对象,这个对象的功能负责把控制器和 dom 关联在一起,每个控制器间互不影响,$scope可以像变量一样在作用域间传递和使用。
- 高版本的控制器不能直接在 js 中定义。
- ng-app="" 静态的指令,直接启动。如果有多个,只启动第一个。如果加在某 div 上,表示这个 div 标签内有效。还有一种动态的让 angularjs 运行的方式,在 js 中写 angula.bootstrap(启动对象,导入时载入的模块)。 通过 angularjs 来控制 dom 元素,是通过 angularjs 内置的一个精简版的 jquery-jqlite ; 使他可以像 jq 一样进行 dom 操作。 jqlite 是 angular.element 提供出来的,和 jq 操作差不多,只不过不能使用 this 。并且不能直接获取 dom 元素,如果通过标签名查找的话可通过 `angular.element(document).find('标签名')` 查找。 - 以下代码没有使用 ng-app,使用的是 angular.bootstrap 动态启动 angular ```
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<button id="btn">点击</button>
<script src="angular1.min.js"></script>
<script>
angular.element(document).ready(function(){
var btn=document.getElementById('btn');
angular.element(btn).on('click',function(){
alert(1);
});
angular.bootstrap(btn,[]);
})
</script>
</body>
</html>
``` - 控制器在 1.3.0-beta.15 以上不再支持全局的 Controller 。以下代码使用的是 1.3.0-beta.14 版本,如果使用 1.3.0-beta.15 会报错。
因为从Angular-1.3.0 beta15开始,Angular不再支持全局的Controller! ```
<!DOCTYPE html>
<html ng-app="">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div ng-controller="fn">
姓名:<input type="text" ng-model="aa"><br>
<input type="button" value="问候" ng-click="tap()">
<div ng-init="name" ng-bind="name"></div>
</div>
</body>
<script src="http://cdn.bootcss.com/angular.js/1.3.0-beta.14/angular.min.js"></script>
<script>
function fn($scope){
$scope.tap=function(){
$scope.name="hello"+$scope.aa
}
}
</script>
</html>
``` - 使用 module 实现控制器。 ```
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<body>
<div id="bo" ng-controller="mycontroller" ng-bind="msg"></div>
<script src="angular1.min.js"></script>
<script>
var myApp=angular.module('aa',[]) //1 定义模块,注入需要的服务
var element=angular.element(document.getElementById('bo')); //获取元素
var aa=function($scope){ //2 里面发生的事,通过 $scope 控制
$scope.msg='hi';
}
myApp.controller('mycontroller',aa); //3 通过控制器调用模块
angular.bootstrap(element,['aa']); //4 运行 angular
</script>
</body>
</html>
``` ## 自定义指令
1. 让 html 更有语义,不需要深入研究代码和逻辑,就可知道页面的大致逻辑。
2. 抽象一个自定义的组件,在其他地方可以重用。 ```
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<body>
<mytag ng-app="myApp"></mytag>
<script src='angular1.min.js'></script>
<script>
var myApp = angular.module("myApp", []);
myApp.directive("mytag", function() {
return {
template : "<h1>自定义指令!</h1>"
};
});
</script>
</body>
</html>
```

AngularJS 笔记1的更多相关文章

  1. AngularJS笔记---注册服务

    在前面的笔记中,了解到AngularJS的后台控制可以在Controller里面实现. 可是如果所有的逻辑代码都写到Controller会显得该Controller过于臃肿. 不方便维护, Angul ...

  2. AngularJs 笔记

    初识 directive 指令 ng-app 初始化一个AngularJs应用程序(通过一个值(比如 ng-app="myModule")连接到代码模块.) ng-init 初始化 ...

  3. AngularJS笔记--自定义指令

    在前端开发中, 我们会遇到很多地方都会用到同一种类型的控件.AngularJS提供了自定义指令功能,我们可以在指令里面定义特定的html模板.提供给前台html调用. 一. 指令的简单定义.  下面定 ...

  4. AngularJS笔记---路由视图

    最近有同事提到过关于ng-view的使用, 其实自己也不懂了,由于最近一直在做AngularJs的Rearch,所以就看了一些关于ng-view的国外博客. 做过ASP.NET MVC4的都知道, 我 ...

  5. AngularJS笔记---作用域和控制器

    什么是作用域. 什么是控制器, 作用域包含了渲染视图时所需的功能和数据,它是所有视图的唯一源头.可以将作用域理解成试图模型(ViewModel). 作用域之间可以是包含关系也可以是独立关系.可以通过设 ...

  6. angularjs 笔记(1) -- 引导

    首先: 1,引入angularJS文件,<script type="text/javascript" src="angularjs.min.js"> ...

  7. AngularJS笔记---数据绑定

    一.数据绑定 1.简单绑定 下面实现了一个简单的加法运算的绑定, A.ng-app:表示该div以内都在AngularJS的应用, 去掉ng-app="" 那么后面的绑定都将无效 ...

  8. angularjs笔记(三)

    AngularJS API 7.其他一些常用指令,布尔类型的指令也可以用表达式 (1).数组索引$index <!DOCTYPE html> <html> <head&g ...

  9. angularjs笔记(二)

    AngularJS API 4.AngularJS过滤器 使用一个管道符(|)添加到表达式和指令中 例1.格式化字母转为大写 <!DOCTYPE html> <html> &l ...

  10. angularjs笔记(一)

    简介 AngularJS API angularjs是javascript框架,通过指令(指令就是自定义的html标签属性)扩展了HTML,并且可以通过表达式(表达式使用)绑定数据到HTML. 1.a ...

随机推荐

  1. SoapUI link

    1.      Groovy language: http://docs.groovy-lang.org/latest/html/documentation/index.html http://doc ...

  2. python安装cv2

    pip install opencv-python

  3. HIBERNATE与 MYBATIS的对比

    我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和 ...

  4. php 当前时间 当前时间戳和数据库里取出的时间datetime格式进行比较大小

    php 当前时间 当前时间戳和数据库里取出的时间datetime格式进行比较大小 UNIX时间戳转换为日期用函数: date() ,date('Y-m-d H:i:s', 1500219870); 日 ...

  5. html div重叠问题,原因分析和处理

    1.现象 <!DOCTYPE html > <html> <head> <meta http-equiv="Content-Type" c ...

  6. django -- 修改admin 密码问题

    1.python manage.py shell 2.from django.contrib.auth.models import User 3.user=User.objects.get(usern ...

  7. How to use CAR FANS C800 Diagnostic Scan Tool to do diagnosis operation

    How to use Heavy Duty Diagnostic CAR FANS C800 Diagnostic Scan Tool to do diagnosis operation Here i ...

  8. jetbrain_ia

    在激活Jetbrains旗下任意产品的时候选择激活服务器填入以下地址便可成功激活 http://idea.liyang.io 最新方法(2018.3.4) http://blog.csdn.net/w ...

  9. log4j2笔记 #01# Architecture

    索引 Architecture Main Components Logger Hierarchy LoggerContext Configuration Logger LoggerConfig Fil ...

  10. AirTest源码分析之运行器

    from: https://blog.csdn.net/u012897401/article/details/82900562 使用:根据airtest文档说明,可以通过命令行来启动air脚本,需要传 ...