AngularJS【初体验】-01

一、介绍

1、是前端MVC框架,由Google公司维护的。

2、特点:模块化、双向数据绑定、语义化标签、依赖注入等。

3、其实jQuery只是一个类库,并不是一个框架。类库只是一堆函数的集合体。

4、Angular是一个框架,是一堆类库的集合体。

5、jquery是以DOM为驱动的,二Angular是以数据和逻辑来驱动的(核心)。

6、与Angular类似的框架还有很多:BackBone、KnockoutJS、Vue、React等。

7、本质上也是js文件。


二、下载

1、官网

2、npm下载

3、bower下载


三、体验

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

<script src="angular.js"></script>

</head>

<body ng-app>

<input type="text" ng-model="msg">

<h3>{{msg}}</h3>

</body>

</html>


四、MVC概念

1、分工明确:提高效率。将工作内容对员工进行分工。目的是可以使工作效率得到提升。(后端处理数据(Model模型),前端展示数据(View视图),前端与后端之间个协调者,叫做(Controller控制器))。

2、唯一的目的是为了提升开发效率。

3、MVVM(model view viewmodel)这个是前端的MVC,他的核心思想是一样的。MVW、MVP、MV*都是MVC的衍生版


五、模块化

1、模块化是一种思想。

2、Angularjs也是模块的方式来组织代码的。

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

<script src="angular.js"></script>

</head>

<body>

<!-- 指定一个应用 (就是一堆功能的集合)(一个网站就是一个应用-->

<!-- 通过一个属性来指定一个应用 -->

<!-- ng-app属性所在标签所包含的所有子内容,都属于应用的一部分 -->

<div class="box" ng-app="App">

<!-- 通过ng-controller可以定义视图 -->

<!-- ng-controller所对应的标签所包含的所有子内容都属于视图的一部分 -->

<div ng-controller="DemoCtrl">

<h1>{{name}}</h1>

<span>{{age}}</span>

</div>

</div>

<script>

// 通过js逻辑来完成应用的具体功能

// js代码使按着模块的形式组织的

// 所以开始逻辑前需要创建模块

// Angularjs有自己的一套创建模块的方法

// 当引入Angular以后,就会提供一个全局的对象叫App。并且在此对象下提供若干方法,其中一个方法叫module,通过此方法可以创建一个模块

// 需要两个参数

// 第一个是模块名称(一般对应应用名称),第二个参数依赖

var App=angular.module(‘App‘,[]);

// 模块是以MVC的形式来组织代码的,模块具备三个角色,分别是MVC

// 模块想要工作,需要三个角色配合起来,对三个角色进行创建

// 先创建控制器

// 模块实例下有若干方法,其中controller方法用来创建一个控制器

// 需要两个参数,第一个参数是控制器的名称(一般有含义的名词),第二个参数也是依赖

App.controller(‘DemoCtrl‘,[‘$scope‘,function($scope){

// $scope就认为是模型 M

// $scope可以认为是一个空对象

$scope.name=‘香茗‘;

$scope.age=12;

}]);

</script>

</body>

</html>

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

<script src="angular.js"></script>

</head>

<body>

<div class="box" ng-app="App">

<div ng-controller=‘DemoCtrl‘>

<h1>{{name}}</h1>

<span>{{age}}</span>

</div>

</div>

<script>

var App=angular.module(‘App‘,[]);

App.controller(‘DemoCtrl‘,[‘$scope‘,function($scope){

$scope.name=‘xiaoyagn‘;

$scope.age=‘123‘;

}]);

</script>

</body>

</html>

两个模块:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

<script src="angular.js"></script>

</head>

<body>

<div class="box" ng-app="App">

<div ng-controller=‘DemoCtrl‘>

<h1>{{name}}</h1>

<span>{{age}}</span>

</div>

<div ng-controller=‘DemoCtrl2‘>

<h1>{{name}}</h1>

<span>{{age}}</span>

</div>

</div>

<script>

var App=angular.module(‘App‘,[]);

App.controller(‘DemoCtrl‘,[‘$scope‘,function($scope){

$scope.name=‘xiaoyagn‘;

$scope.age=‘123‘;

}]);

// 创建第二个控制器

App.controller(‘DemoCtrl2‘,[‘$scope‘,function($scope){

$scope.name=‘舒见佳‘;

$scope.age=‘(?ω?)(?_?) ┗( ▔, ▔ )┛‘;

}]);

</script>

</body>

</html>

遍历模块:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

<script src="angular.js"></script>

</head>

<body ng-app="App">

<div ng-controller="DemoCtrl">

<table>

<tr>

<td>姓名</td>

<td>年龄</td>

<td>性别</td>

</tr>

<!-- ng-repeat用来重复输出。重复此属性所在标签所包含的所有子元素 -->

<tr ng-repeat=‘val in lst‘>

<td>{{val.name}}</td>

<td>{{val.age}}</td>

<td>{{val.gender}}</td>

</tr>

</table>

</div>

<script>

var App = angular.module(‘App‘ , []);

App.controller(‘DemoCtrl‘,[‘$scope‘ , function($scope){

$scope.lst=[

{name:‘123‘,age:50,gender:‘man‘},

{name:‘345‘,age:40,gender:‘female‘},

{name:‘567‘,age:30,gender:‘male‘}

];

}]);

</script>

</body>

</html>


六、内置指令(就是属性)

ng-app 指定应用根元素,至少有一个元素指定了此属性。

ng-controller 指定控制器

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

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

ng-if控制元素是否“存在”,true存在、false不存在

ng-src增强图片路径

ng-href增强地址

ng-class控制类名

ng-include引入模板

ng-disabled表单禁用

ng-readonly表单只读

ng-checked单/复选框表单选中

ng-selected下拉框表单选中

注意:嵌套是不可以的。

prop()和attr()区别

- 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。

- 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。

js是不能主动读取本地文件的。

具体用法

<!DOCTYPE html>

<html lang="en" ng-app="App">

<head ng-controller="DemoCtrl">

<meta charset="UTF-8">

<title>Document</title>

<link rel="stylesheet" ng-href="{{href}}">

<script src="angular.js"></script>

</head>

<body >

<div class="box" ng-controller="DemoCtrl">

<ul>

<li ng-show=‘1‘>ng-show控制元素是否显示,true显示、false不显示</li>

<li ng-hide="false">ng-hide控制元素是否隐藏,true隐藏、false不隐藏</li>

<li ng-if=‘true‘>ng-if控制元素是否“存在”,true存在、false不存在</li>

<li>

ng-src增强图片路径

<img ng-src="{{path}}" >

</li>

<li ng-class="{red:true, blue:true}">ng-class控制类名,属性值为true,相对应的属性名会被当成真实类名添加</li>

<li>

<input type="text" ng-disabled="false">

</li>

<li>

<input type="text" ng-readonly="true" value="123">

</li>

<li>

<input type="checkbox" ng-checked="true">

</li>

<li>

<select name="" id="">

<option value="">1</option>

<option value="" ng-selected="0">2</option>

<option value="">3</option>

</select>

</li>

</ul>

</div>

<script>

var App = angular.module(‘App‘, []);

App.controller(‘DemoCtrl‘, [‘$scope‘, function ($scope) {

$scope.path = ‘9919.png‘;

$scope.href = ‘01.css‘;

}]);

</script>

</body>

</html>

ng-include指令:

必须在服务器下运行

ng-include 指令用于包含外部的 HTML 文件。

包含的内容将作为指定元素的子节点。

ng-include 属性的值可以是一个表达式,返回一个文件名。

默认情况下,包含的文件需要包含在同一个域名下。

属性:

filename

文件名,可以使用表达式来返回文件名。

onload

可选, 文件载入后执行的表达式。

autoscroll

可选,包含的部分是否在指定视图上可滚动。

<div ng-include="‘myFile.htm‘"></div>


七、自定义指令:核心知识点

(Vue是重点,Angular过于复杂,所有学的是弱化的)

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

<script src="angular.js"></script>

</head>

<body ng-app="App">

<div class="box" ng-controller="DemoCtrl">

<ul>

<li demo></li>

<demo></demo>

</ul>

</div>

<script>

var App=angular.module(‘App‘,[]);

App.controller("DemoCtrl",[‘$scope‘,function($scope){

}]);

// directive用来定义一个指令

// 需要两个参数,第一个为指令的名称,第二个为指令的逻辑

App.directive(‘demo‘,function(){

// 这里写一个逻辑

// console.log(1);

// 必须返回一个值,可以是对象或者函数

// 对象有一定的要求

return {

// A attritube表示此指令可以通过指令来使用

// E element表示此指令可以通过标签来使用 、M是注释(    <!-- directive:demo -->使用)、C是类名

// restrict: ‘A‘,

restrict: ‘ECMA‘,

template: ‘<h1>Hello Angularjs</h1>‘,

replace: true,//li只是一个占位符

// 引入一个外部文件

templateUrl:‘07.html‘

}

});

// 上述代码定义了一个非常基本的指令,只满足了语法,其使用方法与内置指令一样

</script>

</body>

</html>


8、数据绑定:

所谓的数据绑定其实就是指的将特定的模型数据与视图位置建立一种关联关系,这种关系就是数据绑定。

单向绑定:

双向绑定:

第一种写法

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

<script src= "angular.js"></script>

</head>

<body ng-app=‘App‘>

<div ng-controller="DemoCtrl">

<h1>

{{name}}

</h1>

<ul>

<li ng-repeat=‘val in courses‘>{{val}}</li>

</ul>

</div>

<script>

var App=angular.module(‘App‘,[]);

App.controller(‘DemoCtrl‘,[‘$scope‘, function ($scope){

$scope.name=‘小明‘;

$scope.courses=[‘html‘,‘js‘,‘css‘];

}])

</script>

</body>

</html>

第二种写法

<!-- ng-bind 是用来实现数据绑定到模型上的指令,{{}}是ng-bind的简写模式 -->

<h1 ng-bind=‘name‘>

</h1>

<ul>

<li ng-repeat=‘val in courses‘ ng-bind=‘val‘></li>

</ul>

ng-model用来将视图数据绑定到模型上

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

<script src="angular.js"></script>

</head>

<body ng-app="App">

<div ng-controller=‘DemoCtrl‘>

<input type="text" ng-model=‘msg‘>

<h3>{{msg}}</h3>

<button ng-click="show()">点击</button>

</div>

<script>

var App=angular.module(‘App‘,[]);

App.controller(‘DemoCtrl‘,[‘$scope‘,function($scope){

$scope.show=function(){

alert($scope.msg)

}

}]);

</script>

</body>

</html>

ng-bind单向 ng-model(表单元素)双向

闪烁现象:利用ng-bind能够避免闪烁。但是不能使用两次,而{{}}可以使用多次在一个标签之中,ng-bind不建议使用。闪烁现象可以解决(只要把Angularjs拿到前面去,在闪烁标签加入ng-cloak)

<p ng-cloak></p>

通过ng-init指令也可以定义模型数据

<div ng-init="name=‘123‘;age=18"></div>

区别:简单的可以这么写


9、处理事件

placeholder占位符

ng-click="click()"

避免全局函数

ng-mouseover="over()"

ng-blur="blur()"

重复:ng-repeat

<div ng-repeat="(key,val) in list">{{key}}{{val}}</div>

<div ng-repeat="val in list">{{$index}}{{val}}</div>

找到遍历结果是否是奇数项

<div ng-repeat="val in list">{{$odd}}{{$index}}{{val}}</div>

偶数项

<div ng-repeat="val in list">{{$even}}{{$index}}{{val}}</div>

第一个

<div ng-repeat="val in list">{{$first}}{{$index}}{{val}}</div>

最后一个

<div ng-repeat="val in list">{{$last}}{{$index}}{{val}}</div>

ng-switch on="val"

ng-switch-when="html"`

时间: 2024-10-09 04:41:33

AngularJS【初体验】-01的相关文章

angularJs初体验,实现双向数据绑定!使用体会:比较爽

使用初体验:ng 双向数据绑定: 最简单的双向数据绑定:(使用默认模块控制) <body ng-app> <input type="text" ng-model='ngName'> <h1>{{ngName}}</h1> </body> 完成对数据的初始化: //初始化原理:ng-app 初始完之后,就会往在ng-init里面赋值一个初始值:world , 这个值会自动绑定到下面 : <body ng-app ng-in

angularJS初体验

一.简介及使用 1.Angular JS是前端JS框架 2.Angular JS诞生于2009年,由Misko Hevery和另外一人创建,后由google收购 3.下载:搜angular.min.js,打开http://www.bootcdn.cn/angular.js/,版本:1.5.8,点击,打开新页面,找到https://cdn.bootcss.com/angular.js/1.5.8/angular.min.js,复制链接,通过浏览器即可预览angular JS,可以下载到本地使用,也

百度EChart3初体验

由于项目需要在首页搞一个订单数量的走势图,经过多方查找,体验,感觉ECharts不错,封装的很细,我们只需要看自己需要那种类型的图表,搞定好自己的json数据就OK.至于说如何体现出来,官网的教程很详细.大家可以去看下.大概了解下用法就OK. 百度ECharts 3:http://echarts.baidu.com/index.html 其实还有很多,可以到官网中找. 下面是我进行操作的步奏,大家可以看下,做个参考. ECharts初体验—01... 需要到官网下载最新的版本的js文件(完整版)

AngularJS路由系列(3)-- UI-Router初体验

本系列探寻AngularJS的路由机制,在WebStorm下开发. AngularJS路由系列包括: 1.AngularJS路由系列(1)--基本路由配置2.AngularJS路由系列(2)--刷新.查看路由,路由事件和URL格式,获取路由参数,路由的Resolve3.AngularJS路由系列(3)-- UI-Router初体验4.AngularJS路由系列(4)-- UI-Router的$state服务.路由事件.获取路由参数5.AngularJS路由系列(5)-- UI-Router的路由

Node.js 网页瘸腿爬虫初体验

延续上一篇,想把自己博客的文档标题利用Node.js的request全提取出来,于是有了下面的初哥爬虫,水平有限,这只爬虫目前还有点瘸腿,请看官你指正了. // 内置http模块,提供了http服务器和客户端功能 var http=require("http"); // 内置文件处理模块 var fs=require('fs'); // 创建一个将流数据写入文件的WriteStream对象 var outstream=fs.createWriteStream('./1.txt'); /

树莓派2代B model 上手初体验,不用显示器,Python GPIO 点亮一颗LED

开题:[好东西,值得研究!] 标题:树莓派2代B model 上手初体验,不用显示器,Python GPIO 点亮一颗LED [知识普及] 1,树莓派各版本对比: 2,树莓派2代BModel 主板,图样 树莓派2 代B GPIO 图 [所需硬件] 一张TF卡,8G或者8G以上,我的是 [三星TF卡16g class10 EVO] 一根网线,让树莓派与路由器连接 一个5V 500MA 的普通USB电源,为树莓派供电 ,我试过了,5V 500ma没问题 一个树莓派2代B 一个普通路由器[如果你连路由

Xamarin.iOS开发初体验

Xamarin是一个跨平台开发框架,这一框架的特点是支持用C#开发IOS.Android.Windows Phone和Mac应用,这套框架底层是用Mono实现的. Mono是一款基于.NET框架的开源工程,包含C#语言编译器.CLR运行时和一组类库,能运行于Windows.Linux.Unix.Mac OS和Solaris.对于.NET程序员来说,Xamarin是走向安卓.iOS.Mac跨平台开发的神器,不仅能用熟悉的C#来开发,还能使用Visual Studio作为IDE.本文内容是Xamar

Linux初体验(一)

Linux初体验(一) Shell date echo alias screen 安装VMware Tools Shell 用途说明 人机交互接口 Shell是Linux系统的用户界面,是用户操作Linux系统的一个直接工具,亦即人机交互接口,其既为用户提供了一个命令界面,也为用户命令提供解释执行的能力,故而Shell也称为Linux的命令解释器(command interpreter). 在Shell中可执行的命令分为两类,内置命令与外部命令,所谓内置命令,即shell自带的命令,可通过命令启

ionicframework I ------------- 初体验

ionicframework I -------------  初体验 Create hybrid mobile apps with the web technologies you love. Free and open source, Ionic offers a library of mobile-optimized HTML, CSS and JScomponents for building highly interactive apps. Built with Sass and op

elmah - Error Logging Modules and Handlers for ASP.NET - 1 : 初体验

elmah(英文):https://code.google.com/p/elmah/ 写作思路:先看结果,然后再说原理 elmah文章基本内容如下 1.安装 2.基本使用 3.详细配置讲解 简介 ELMAH是一个开源项目,其目的是记录和报告在ASP.NET Web应用程序未处理的异常. 早在2004年9月与Atif阿齐兹和斯科特·米切尔发表在MSDN Library,其目的是作为一个概念证明,编写自包含的功能与ASP.NET HTTP模块和处理程序是绝对有可能的,大多有这种特征可能是一篇文章插入