AngularJS实用基础知识_入门必备篇(推荐)


Posted in Javascript onJuly 10, 2017

前言

今天来和大家学习一下AngularJS……

AngularJS 通过新的属性和表达式扩展了 HTML。

AngularJS 可以构建一个单一页面应用程序。

AngularJS 学习起来非常简单。

一、AngularJS指令与表达式

【AngularJS常用指令】

1、ng-app:声明Angular所管辖的区域,一般写在body或HTML上,原则上一个页面只有一个。

2、ng-model:把元素值(比如输入域的值)绑定到应用程序的变量中。

eg:<input type="text" ng-model="name"/>

3、ng-bind:把应用程序变量中的数据绑定到HTML视图中,可用表达式替代。

eg:<div id="div1" ng-bind="name">
</div>等效于<div id="div1" >{{name}}</div>

4、ng-init:初始化 AngularJS应用程序变量。

eg:<body data-ng-app="" ng-init="name=123">

5、表达式:{{}}绑定表达式,可以包含文字,运算符和变量。

但是表达式在网页加载瞬间会看到{{}},所以可以用ng-bind=""替代。

eg:{{ 5 + "" + 5 + ',Angular' }}

【基本概念】

指令:AngularJS中,通过扩展HTML的属性提供功能。

所以,ng-开头的新属性,被我们成为指令。

二、AngularJS中的MVC中的作用域

【MVC三层架构】

1、model(模型):

应用程序中用于处理数据的部分。(保存或修改数据到数据库、变量等)。AngularJS中的Model特指的是:数据。

View(视图):用户看到的用于显示数据的页面。

Controller(控制器):应用程序中处理用户交互的部分。负责从视图读取数据,控制用户输入,并向模型发送数据。

2、工作原理:

用户从视图层发出请求,controller接收到请求后转发给对应的model处理,model处理完成后返回结果给controller,并在View层反馈给用户.

3、创建一个Angular模块,即ng-app所绑定的部分 ,需传递两个参数:

①模块名称:即ng-app所需要绑定的名称,ng-app="myApp"

②数组:需要注入的模块名称,不需要可为空。

eg:var app= angular.module("myApp",[]);

在Angular模块上,创建一个控制器Controller,需要传递两个参数。

①Controller名称,即ng-controller需要绑定的名称。ng-controller="myCtrl"

②Controllerd的构造函数:构造函数可以传入多个参数,包括$scope/$rootScope以及各种系统内置对象;

【AngularJS中的作用域】

①$scope:局部作用域,声明在$scope上的属性和方法,只能在当前的Controller中使用

②$rootScope:根作用域,声明在$rootScope上的属性和方法,

可以在ng-app所包含的任何区域使用(无论是否同Controller,或是否在Controller包含范围中)

>>>若没有使用$scope声明变量,而直接在HTML中使用ng-model绑定的变量作用域为:

1、如果ng-model在某个ng-controller中,则此变量会默认绑定到当前Controller的$scope上;

2、如果ng-model没有在任何一个ng-controller中,此变量会绑定到$rootScope上。

三、AngularJS过滤器

AngularJS中,过滤器可以使用一个管道字符(|)添加到表达式和指令中。

>>>系统内置过滤器:

currency:格式化数字为货币格式。
filter:从数组项中选择一个子集。
lowercase:格式化字符串为小写。
orderBy:根据某个表达式排列数组。
uppercase:格式化字符串为大写。

eg:

<p>{{"aBcDeF"|uppercase}}</p>
<p>{{"aBcDeF"|lowercase}}</p>
<p>{{123456|currency}}</p>

【自定义过滤器】

.filter('reverse',function(){ //可以注入依赖
return function(text){
if(!angular.isString(text)){
return "您输入的不是字符串!"
}else{
return text.split("").reverse().join("");
}
}
})

四、AngularJS中的 http && select && DOM操作

一、AngularJS中的http

$http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。

二、AngularJS中的select

①使用数组作为数据源,其中,x表示数组的每一项。

默认会将x直接绑定到option的value中,而option显示的内容,由前面的x for...决定。

eg:
<section ng-model= "name" ng-options="x.site for x in sites"></section>

②使用对象作为数据源,其中,(x,y)表示键值对,x为键,y为值。

默认会将值y绑定到option的value中,而option显示的内容,由前面的x for...决定。

eg:
<section ng-model= "name" ng-options="x for (x,y) in sites"></section>

三、AngularJS中的DOM操作

①ng-disabled="true/false"

当传入true时,控件禁用。传入false时,启用。

<label>
<input type="checkbox" ng-model="mySwitch">是否同意
小希真萌!
</label>
<button ng-disabled="!mySwitch" class="btn btn-primary">点我!</button>
<p></p>

②ng-show

默认隐藏 传入true时显示
<label>
<input type="checkbox" ng-model="mySwitch1">是否
显示?
</label>
<button ng-show="mySwitch1" class="btn btn-primary">点我!</button>
<p></p>

③ng-hide

默认显示 传入true是隐藏
<label>
<input type="checkbox" ng-model="mySwitch2">是否隐藏?
</label>
<button ng-hide="mySwitch2" class="btn btn-primary">点我!</button>
<p></p>

④ng-click

定义了AngularJS中的点击事件。
只能触发绑定在Angular作用域中的属性与方法。
<button ng-click="count = count + 1">点我!</button>
<p>{{ count }}</p>
<button ng-click="func()">说一下感想吧!</button>

DOM操作附录:

eg:

先导入JS文件angular.js!!!

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

JS代码:

angular.module("app",[])
.controller("ctrl",function($scope,$rootScope){
$scope.count = 10;
$scope.func = function(){
alert("小希真萌!");
}
})

五、AngularJS中的表单验证

1、表单中常见的验证操作:

$dirty:表单有填写记录
$valid:字段内容合法的
$invalid:字段内容是非法的
$pristine:表单没有填写记录
$error:表单验证不通过的错误信息

2、验证时需给表单及需要验证的input,设置name属性;

给form及input设置name后,会将form表单信息,默认绑定到$scope作用域中,故可以使用formName.inputName.$验证操作 得到验证结果;

eg:

formName.inputName.$dirty="true" 表单被填写过
formName.inputName.$invalid="true" 表单输入不合法
formName.inputName.$error.required="true" 表单必填但未填
$error支持的验证有:required/minlength/maxlength/pattern/email/number/data
/url等……

3、为避免冲突,例如使用type="email"时,H5也会进行验证操作。

如果只想使用AngularJS验证,可以使用<form novalidate></form>属性,禁用H5自带验证功能。

六、AngularJS中的动画

AngularJS中使用动画 :

提供了动画效果,可以配合 CSS使用。

1、AngularJS 使用动画需要引入angular-animate.js库!

2、如果页面中没有自定义的模块(ng-app),可以直接绑定系统模块ng-app="ngAnimate";

如果页面中已有自定义模块,可以在自定义模块后注入"ngAnimate"模块。
eg:angular.module("app",["ngAnimate"])

3、当调用相关指令控制元素显示隐藏时,会自动添加对应的class类;

ng-show/ng-hide 会移除/添加ng-hide
ng-if/ng-switch/ng-repeat等其他指令,需要分别设置显示后和隐藏后的class样式;
显示后:.ng-enter-active,.ng-leave{}
隐藏后:.ng-enter,.ng-leave-active{}

七、AngularJS中的路由

1、载入了实现路由的 js 文件:angular-route.js。

2、包含了 ngRoute 模块作为主应用模块的依赖模块。

eg:angular.module("app",["ngRoute"])

3.即将超链接改为路有格式:

eg:<a href="#/page1" rel="external nofollow" >page1</a>

4.在config中,注入$routeProvider,进行路由配置:

$routeProvider
.when('/',{template:'这是首页页面'})
.when('/page1',{template:'这是page1页面'})
.when('/page2',{template:'这是page2页面'})
.when('/page3',{template:'这是page3页面'})
.otherwise({redirectTo:'/'});
})

5、在页面的合适位置,添加ng-view,用于承载打开的页面
<div ng-view></div> <ng-view></ng-view>

【路由参数对象中可选属性】

1.tempalte:自定的HTML模板,会加载在ng-view中
2.tempalteUrl:导入外部的HTML模板,为了避免冲突外部的HTML只需要保留body内部的代码即可;
3.redirectTo:重定向于某个页面,一般用于.otherwise()中;
4.controller:在当模板上执行的controller函数,生成新的scope

以上这篇AngularJS实用基础知识_入门必备篇(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery阻止事件冒泡 event.stopPropagation
Dec 11 Javascript
使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
Jan 15 Javascript
JS延迟加载加快页面打开速度示例代码
Dec 30 Javascript
JavaScript编程中容易出BUG的几点小知识
Jan 31 Javascript
javascript实现手机震动API代码
Aug 05 Javascript
jQuery实现移动端滑块拖动选择数字效果
Dec 24 Javascript
学习JavaScript鼠标响应事件
Dec 25 Javascript
详解vue中this.$emit()的返回值是什么
Apr 07 Javascript
React中阻止事件冒泡的问题详析
Apr 12 Javascript
Js通过AES加密后PHP用Openssl解密的方法
Jul 12 Javascript
layui实现数据表格table分页功能(ajax异步)
Jul 27 Javascript
Typescript类型系统FLOW静态检查基本规范
May 25 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
Jul 09 #Javascript
详谈AngularJs 控制器、数据绑定、作用域
Jul 09 #Javascript
vue子父组件通信的实现代码
Jul 09 #Javascript
vue2中filter()的实现代码
Jul 09 #Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
Jul 09 #Javascript
收藏AngularJS中最重要的核心功能
Jul 09 #Javascript
Bootstrap Multiselect 常用组件实现代码
Jul 09 #Javascript
You might like
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
php_xmlhttp 乱码问题解决方法
2009/08/07 PHP
PHP基本语法总结
2014/09/06 PHP
8个PHP数组面试题
2015/06/23 PHP
基于jQuery图片平滑连续滚动插件
2009/04/27 Javascript
JS backgroundImage控制
2009/05/19 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
javascript淘宝主图放大镜功能
2016/10/20 Javascript
原生js实现键盘控制div移动且解决停顿问题
2016/12/05 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
vue实现微信二次分享以及自定义分享的示例
2019/03/20 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
VUE : vue-cli中去掉路由中的井号#操作
2020/09/04 Javascript
js实现复制粘贴的两种方法
2020/12/04 Javascript
python批量同步web服务器代码核心程序
2014/09/01 Python
python实现汉诺塔递归算法经典案例
2021/03/01 Python
python常用知识梳理(必看篇)
2017/03/23 Python
python中的json总结
2018/10/11 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
Flask-WTF表单的使用方法
2019/07/12 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
国外软件测试工程师面试题
2016/12/09 面试题
教育孩子心得体会
2014/01/01 职场文书
会展策划与管理专业大学生职业生涯规划
2014/02/07 职场文书
基层党员四风问题自我剖析材料
2014/09/29 职场文书
毕业典礼主持词
2015/06/29 职场文书
MySQL系列之六 用户与授权
2021/07/02 MySQL
使用Nginx+Tomcat实现负载均衡的全过程
2022/05/30 Servers