热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AngularJS实用基础知识

前言今天来和大家学习一下AngularJS……AngularJS通过新的属性和表达式扩展了HTML。AngularJS可以构建一个单一页面应用程序。AngularJS学习起来非常简

前言

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

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

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

  AngularJS 学习起来非常简单。

 

 

一、AngularJS指令与表达式

【AngularJS常用指令】
1、ng-app:声明Angular所管辖的区域,一般写在body或HTML上,原则上一个页面只有一个。
2、ng-model:把元素值(比如输入域的值)绑定到应用程序的变量中。
eg:

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

等效于

{{name}}

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

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:

{{"aBcDeF"|uppercase}}


{{"aBcDeF"|lowercase}}


{{123456|currency}}

 

【自定义过滤器】

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

 

 

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

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

二、AngularJS中的select
①使用数组作为数据源,其中,x表示数组的每一项。
默认会将x直接绑定到option的value中,而option显示的内容,由前面的x for...决定。
eg:

②使用对象作为数据源,其中,(x,y)表示键值对,x为键,y为值。
默认会将值y绑定到option的value中,而option显示的内容,由前面的x for...决定。
eg:

三、AngularJS中的DOM操作
①ng-disabled="true/false"
当传入true时,控件禁用。传入false时,启用。

是否同意
小希真萌!




②ng-show
默认隐藏 传入true时显示

是否
显示?


③ng-hide
默认显示 传入true是隐藏

是否隐藏?


④ng-click
定义了AngularJS中的点击事件。
只能触发绑定在Angular作用域中的属性与方法。

{{ count }}


 

DOM操作附录:
eg:
先导入JS文件angular.js!!!

JS代码:

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

 

五、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验证,可以使用属性,禁用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:page1

4.在config中,注入$routeProvider,进行路由配置:
$routeProvider
.when('/',{template:'这是首页页面'})
.when('/page1',{template:'这是page1页面'})
.when('/page2',{template:'这是page2页面'})
.when('/page3',{template:'这是page3页面'})
.otherwise({redirectTo:'/'});
})
5、在页面的合适位置,添加ng-view,用于承载打开的页面

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

 

 

 

 

 

今天的理论知识先分享到这里,愿能帮助到你~~~小菜鸟一枚,感谢您的支持!

 

 

 

 




作者:夕照希望
出处:http://www.cnblogs.com/hope666/  

推荐阅读
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文总结和分析了JDK核心源码(2)中lang包下的基础知识,包括常用的对象类型包和异常类型包。在对象类型包中,介绍了Object类、String类、StringBuilder类、StringBuffer类和基本元素的包装类。在异常类型包中,介绍了Throwable类、Error类型和Exception类型。这些基础知识对于理解和使用JDK核心源码具有重要意义。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了一种解析GRE报文长度的方法,通过分析GRE报文头中的标志位来计算报文长度。具体实现步骤包括获取GRE报文头指针、提取标志位、计算报文长度等。该方法可以帮助用户准确地获取GRE报文的长度信息。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 本文介绍了2015年九月八日的js学习总结及相关知识点,包括参考书《javaScript Dom编程的艺术》、js简史、Dom、DHTML、解释型程序设计和编译型程序设计等内容。同时还提到了最佳实践是将标签放到HTML文档的最后,并且对语句和注释的使用进行了说明。 ... [详细]
author-avatar
小超201209
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有