您的位置:首页 > Web前端 > JavaScript

Angular.js 学习笔记 整理一

2017-07-06 17:38 525 查看
Angular.js 跟Jquery有些相似 都是一个框架

使用方式都是

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript"  src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body  >
<div  ng-app>
<input type="text" ng-model="msg" id="txt">
<span>{{msg}}</span>
</div>
<div ng-app>
<input type="text" ng-model="wrd" id="txt" name="">
<span>{{wrd}}</span>
</div>

</body>
</html>


AngularJS核心特性1—MVC (面试必考)

module view controller 开发模式

m 代表模型 module 数据处理,一般指数据库的操作

类 模型

{a:ds f====> a

b:sfsf ===> b

c:grew}===> c

v 代表页面渲染 view  即指 html+css 页面处理
c 代表控制器   controller      用于模型和视图交互

更合理的组织代码    逻辑更加清晰    降低了代码之间的耦合度
高耦合:a依赖与b,a不能使用
低耦合:a在没有b的情况下也可以运行自己逻辑


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<!-- v 页面处理 -->
<div id="box"></div>
<script type="text/javascript">
var json = {
a:'123',
b:'456',
c:'789'
}
//m
function Class(obj) {
this.a = obj.a;
this.b = obj.b;
this.c = obj.c;
}
//定义使用这个类
var a = new Class(json);
document.getElementById('box').innerHTML=a.a;
</script>
</body>
</html>


MVVM 弱化了控制器 ng-repeat (循环)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript"  src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body  >
<div  ng-app>
<input type="text" ng-model="msg" id="txt">
<span>{{msg}}</span>
</div>

<div ng-app>

4000
<input type="text" ng-model="wrd" id="txt" name="">
<span>{{wrd}}</span>
</div>
<ui ng-repeat>
<li>1</li>
</ui>
<script type="text/javascript">
// 1.获取两个内容

// input焦点事件监听
</script>
</body>
</html>


MVP 页面中直接去调用

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<!-- v 页面处理 -->
<div id="box"></div>
<script type="text/javascript">
var json = {
a:'123',
b:'456',
c:'789'
}
//m
function Class(obj) {
this.a = obj.a;
this.b = obj.b;
this.c = obj.c;
}
//定义使用这个类
var a = new Class(json);
document.getElementById('box').innerHTML="<a></a>";
</script>
</body>
</html>


二:核心—模块化

双向数据绑定 ng-model

语义化标签

依赖注入 数据对象模型

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript"  src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>

<div ng-app='stu'>
<!-- 声明控制器 -->
<!-- {{stus}} 数据显示 -->
<div ng-controller="ctr1">{{stus}}</div>
</div>
<script type="text/javascript">
//  $scope 数据模型
var stu = angular.module('stu',[]);
stu.controller('ctr1',['$scope', function($scope){

// 数据模型结合
$scope.stus = 'zhangsan';
}]);

</script>
</body>
</html>


1.声明模块 ng-app=”模块名”

声明控制器 ng-controller

2.angular.module(‘模块名’,[依赖其它模块]) 定义模块

3.定义控制器 scope数据对象模型app.controller(‘控制器名字′,[scope,function(scope)处理页面交互逻辑])4.数据处理循环处理ng−repeat=‘stuinstus′(谁循环放谁那)ng−controller=“ctrl”app.controller(‘ctrl′[scope,function(scope)推断式依赖注入])很多有情况无法使用在代码压缩的时候依赖会被解除app.controller(‘ctrl′[scope,function(){行内式依赖注入}])

三:指令

书写方式 ng-

[size=3]1.内置指令:[/size]

ng-app 指定那个模块

ng-controller 指定控制器

ng-bind 数据绑定

ng-show 控制元素是否显示 true显示 false 不显示

ng-hide 控制元素是否隐藏 true隐藏 false 不隐藏

ng-if 控制元素是否”存在”(与if相同)

ng-src 增强图片路径

ng-class 控制类名

ng-include 引入模板 在服务器下运作

ng-disabled 表单禁用

ng-readonly 只读

ng-checked 选中

ng-selected 下拉框

ng-src 图片加载

ng-href 链接地址 引入外部文件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>内置指令</title>
<script type="text/javascript"  src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
<!-- 引入外部样式 -->
<link rel="stylesheet" type="text/css" ng-href="{{link}}">
<style type="text/css">
.red{
color: red;
}
.blue{
color:blue;
}
</style>
</head>
<body ng-app="app">
<ul ng-controller="ctrl">
<!-- 数据绑定 -->
<li ng-bind="name"></li>
<!-- 数据加载 -->
<li>{{name}}</li>
<li ng-show="1">ng-show用来显示隐藏内容,为true显示</li>
<li ng-hide="1">ng-hide用来隐藏隐藏内容,为true隐藏</li>
<li ng-if="1"><img ng-src="{{path}}"></li>
<!-- 样式添加   同为true后着覆盖前者,false谁是true,就是谁-->
<li ng-class="{red:true,blue:true}">ng-class指令</li>
<!-- 禁用 -->
<li><input type="text" ng-disable="1" name=""></li>
<!-- 只读 -->
<li><input type="text" ng-readonly="1" name="" value="god is"></li>
<!-- 选中 -->
<li><input type="checkbox" ng-checked="1" name=""></li>
<!-- 下拉 -->
<li><select>
<option value="1">地球村</option>
<option value="1">火星人</option>
<option value="1"  ng-selected="1">冥王星</option>
</select></li>
</ul>
<script type="text/javascript">
//定义模块
var app = angular.module('app',[]);
//指定控制器
app.controller('ctrl',['$scope',function ($scope) {
$scope.name = '张三';
$scope.path = "1.jpg";
$scope.link = "1.css";
}])
</script>
</body>
</html>


2.自定义指令

1.var app = angular.module(‘模块名’,[依赖其它模块]) 定义模块

2.directive去自定义指令

app.directive(‘指令名’,function(){

返回指令对象

return {

1.指定自定义标签的类型

E A C M

E element 标签

A attribute 属性

C class 类

M mark 标记

restrict:’EACM’

2.是否替换原有标签

replace:true(一般都选择)

3.指令模块 依托于谁

template:’

hello world



4.指令模块的外部模板 在服务器下运作

templateUrl:”test.html”

}

})

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
<script type="text/javascript" src="www/angular-1-4-1.js"></script>
<style type="text/css">
div{
background: red;
}
</style>
</head>
<body ng-app="app">

<!-- 元素E -->
<!-- <tag></tag> -->

<!-- 属性A  没有原来属性值 替换 -->
<!-- <div tag>algio</div> -->

<!-- 类C 没有原来属性值 替换 -->
<!-- <div class="tag"></div> -->

<!-- 注释D -->
<!-- directive:tag -->
<script type="text/javascript">
//定义模块
var app = angular.module('app',[]);
//自定义指令
app.directive('tag',function(){
//返回一个定义的模块对象
return{
// 指定自定义标签的类型
restrict: "AECM",
//是否替换原有标签
replace:true,
// 指令模块
template:'<ul><li>首页</li><li>列表</li></ul>'

}
})
</script>
</body>
</html>


3.数据绑定

单项数据绑定 template(单向) 一次性绑定

View

/// \\

template model

[color=#e36c09] 单项数据绑定,数据渲染到试图。然后在DOM中显示,不会改变[/color]

双向数据绑定 ng-bind

template

|||

view

// \

|| ||

\ //

model

双向数据绑定:中间有监听事件,监听数据的变换,数据改变,view发生改变
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  angular-js 笔记
相关文章推荐