什么是 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. Presto 学习

    Presto 基础知识与概念学习可以参考这些博客: presto 0.166概述 https://www.cnblogs.com/sorco/p/7060166.html Presto学习-prest ...

  2. 转:【专题六】UDP编程

    引用: 前一个专题简单介绍了TCP编程的一些知识,UDP与TCP地位相当的另一个传输层协议,它也是当下流行的很多主流网络应用(例如QQ.MSN和Skype等一些即时通信软件传输层都是应用UDP协议的) ...

  3. Qt介绍1---QPA(Qt Platform Abstraction)

    Qt是一个夸平台的库(一直宣称“Qt everywhere”),但是Qt底层不是夸平台的.比如:Qt中Gui部件的核心类QWidget,该类除了qwidget.h 和 qwidget.cpp两个原文件 ...

  4. sql server 触发器的简单用法

    触发器  -- 一下写的都是我对触发器的理解 当在执行insert . delete . 等操作的时候 随便要做一些额外的操作, 比如在添加的时候就会将新添加的数据存到inserted表中 写个实例 ...

  5. EditPlus配置GCC

    --GCC Compile-- 命令:D:\GCC\MinGW_RP_Green\bin\gcc.exe 参数:$(FileName) -o $(FileNameNoExt).exe 初始目录:$(F ...

  6. 【视频】使用fiddler开发工具进行新架构页面本地调试

    [视频]使用fiddler开发工具进行新架构页面本地调试,视频没录制好,有些部分比较模糊...

  7. django 正向,反向

    表名 ,foreignkey, 正向 obj.表名小写_set.all() 反向操作.

  8. MySQL5.7 忘记root密码,怎么破?

    MySQL5.7 忘记root密码,怎么破? 关服 # kill $mysql_pid 免密启动 # /usr/local/mysql57/bin/mysqld_safe --defaults-fil ...

  9. 3 字节的 UTF-8 序列的字节 3 无效 解决

    参考下列应该可以解决,笔者为3. 1.https://blog.csdn.net/hostel_2/article/details/51517361 2.https://blog.csdn.net/u ...

  10. mysql Out of range value adjusted for column导致Warning(1265)Data truncated for column 'column_name' at row 1

    今天下午,我们的一个开发来找我,说线上有个环境报了"Warning(1265)Data truncated for column 'column_name' at row 1",定 ...