AngularJS语法基础及数据绑定——详解各种数据绑定指令、属性应用
AngularJS简单易学,但是功能强大。特别是在构建单页面应用方面效果显著。而 数据绑定 可以说是他被广泛使用的最主要的优点。他舍弃了对DOM的操作方式,一切都由AngularJS来自动更新视图,我们不必写操作dom的代码。接下来我们就详细解释下AngularJS中数据绑定的方式,及其具体的使用规则、技巧。
首先介绍下此次博客的内容:
1.第一部分,介绍最最基本的AngularJS的根应用、控制器的基本语法,为初学者准备的。
2.第二部分,详解如何数据绑定,3种绑定方式的区别。分别用于什么情况。
那么,接下来,我们就开始介绍了,对某一部分感兴趣的朋友,可以直接按照大标题1、2进行阅读。
1. AngularJS基础语法
首先,我们看一段简单的代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>AngularJS入门</title>
<style type="text/css">
div{
width: 150px;
height: 50px;
line-height: 50px;
border-radius: 25px;
background-color: darkorange;
margin-top: 20px;
text-align: center;
}
</style>
</head>
<body ng-app="myApp" ng-controller="myControl"> </body>
<script language="JavaScript" src="js/jquery-3.1.1.min.js"></script>
<script language="JavaScript" src="js/angular.min.js"></script>
<script type="text/javascript">
// 他是链式语法,不同控制器可以直接在后面加点连接
angular.module("myApp",[])
.controller("myControl",function($scope){
$scope.d = "我是自定义的变量";
}) </script>
</html>
现在我们解释一下上面的代码:
ng-app="myApp" 是指定应用程序的根元素,也就是说,整个页面我们所有的AnjularJs内容都必须包含在这个HTML标签中。
ng-controller="myControl" 是给我们的应用添加控制器,我们通过不同名字的控制器将整个应用划分为若干个模块,实现不同的功能。
angular.module("myApp",[]) .controller("myControl",function($scope,$rootscope){ $scope.d = "我是自定义的变量"; }) AnjularJs是链式语法,可以直接在后面加点连接实现调用。angular.module("myApp",[])是规定的格式化写法,函数内第一个参数时应用的名称;第二个参数是一个数组,注入我们需要的模块名称,注意此参数不可省略。controller函数,第一个参数传入控制器名称;第二个参数传入一个构造函数,函数的形参$scope代指用特定义的变量是局部有效的,在当前控制器有效。$rootscope,用他定义的变量在整个app中有效,不局限于某个控制器。
$scope.d = "我是自定义的变量"; 这是定义变量,并赋值。$scope定义的是当前控制器有效的局部变量;$rootscope定义的是全局变量,在整个app范围内有效。
这里只是简单的介绍了应用、处理器、变量的定义与使用,想了解的更加详细建议去 菜鸟教程 查看更加详细的说明。
2. 详解数据绑定
首先我们看一段代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>AngularJS入门</title>
<style type="text/css">
div{
width: 200px;
height: 50px;
line-height: 50px;
border-radius: 25px;
background-color: darkorange;
margin-top: 20px;
text-align: center;
}
</style>
</head>
<body ng-app="myApp" ng-controller="myControl">
<div ng-init="a='打印出我来'">下面是绑定数据的div</div>
<!--ng-bind 指令告诉 AngularJS 使用给定的变量或表达式的值来替换 HTML标签里的内容。-->
<div ng-bind="a">+我是原来的内容</div>
<!--{{a}}双层大括号,里面加变量名,也是数据绑定,但是刷新会显示出大括号来-->
<div>{{a}}+我是原来的内容</div> <!--他是一个双向绑定,将HTML内容与变量绑定在一起,无论改变哪一个的值,另一个都会发生变化-->
<input type="text" name="text" id="text" value="" ng-model="b"/>
<div ng-bind="b" ng-init="b='aaaa'"></div>
<div>{{b}}</div>
<script language="JavaScript" src="js/jquery-3.1.1.min.js"></script>
<script language="JavaScript" src="js/angular.min.js"></script>
<script type="text/javascript">
// 他是链式语法,不同控制器可以直接在后面加点连接
angular.module("myApp",[])
.controller("myControl",function($scope){
$scope.d = "我是自定义的变量";
}) </script>
</html>
其效果如下图所示:
那么实现数据绑定都有那些方式呢?基本上有3种:
(1) {{变量/表达式}} 通过这种方式直接绑定数据。注意:a.他是直接修改标签的内容。原来内容不变,再插入变量的内容。b.浏览器需要首先加载index.html页面,渲染它,然后AngularJS才能把它解析成你期望看到的内容。所以,用户会刷新看到大括号的存在。c.他是单向绑定,只能通过修改变量的值来改变标签的内容。
(2) ng-bind="变量" 直接将变量绑定到HTML标签中。注意:a.他是直接重置标签的内容。原本的内容清空直接写入新的变量的内容。b.他不会出现刷新显示大括号的问题。c.他是单向绑定,只能通过修改变量的值来改变标签的内容。
(3) ng-model="b" + ng-bind="b" 。可以理解为先将标签的属性值取出来绑定到变量上,再将变量绑定到另一个标签上。
注意:a. <input>, <select>, <textarea>,元素支持该指令。也就这几个可以输入的表单元素可以绑定。b.ng-model绑定好的变量,可以用上述两种方式的一种来绑定到标签中。这个看具体的需求。c.他是一个双向绑定,将HTML内容与变量绑定在一起,无论改变哪一个的值,另一个都会发生变化。例如上述代码中,给变量b进行了初始化,然后input输入框的value值就默认是b的值了。
而对于ng-model还有对应的设置他的其他参数的属性,ng-model-options,都可以设置如下属性值:
{updateOn: 'event'}规则指定事件发生后绑定数据
{debounce : 1000} 规定等待多少毫秒后绑定数据
{allowInvalid : true|false} 规定是否需要验证后绑定数据
{getterSetter : true|false} 规定是否作为 getters/setters 绑定到模型
{timezone : '0100'} 规则是否使用时区
举例说明一下,我们加入如下代码:
<input type="text" name="text" id="text" value="" ng-model="c" ng-model-options="{debounce : 2000}"/>
<div ng-bind="c">11111</div>
<div ng-bind="d"></div>
效果如图所示:
看图可知,input和div的数据并没有在一开始的时候进行绑定,而是延迟了2s左右才绑定的,至于其他属性值的用法也就和这个大同小异了。
这里有个地方需要提一下:就是如果在控制器当中没有定义对应变量,而在HTML中直接 ng-bind 等直接绑定数据,那么系统默认这就是声明了一个全局变量。
AngularJS语法基础及数据绑定——详解各种数据绑定指令、属性应用的更多相关文章
- 转载 《AngularJS》5个实例详解Directive(指令)机制
<AngularJS>5个实例详解Directive(指令)机制 大漠穷秋 本文整理并扩展了<AngularJS>这本书第六章里面的内容,此书近期即将由电子工业出版社出版,敬请 ...
- 《AngularJS》5个实例详解Directive(指令)机制
本文整理并扩展了<AngularJS>这本书第六章里面的内容,此书近期即将由电子工业出版社出版,敬请期待口令:Angular 1.一点小说明 指令的作用:实现语义化标签 我们常用的HTML ...
- (转)总结之:CentOS 6.5 MySQL数据库的基础以及深入详解
总结之:CentOS 6.5 MySQL数据库的基础以及深入详解 原文:http://tanxw.blog.51cto.com/4309543/1395539 前言 早期MySQL AB公司在2009 ...
- python基础之函数详解
Python基础之函数详解 目录 Python基础之函数详解 一.函数的定义 二.函数的调用 三.函数返回值 四.函数的参数 4.1 位置参数 4.2 关键字参数 实参:位置实参和关键字参数的混合使用 ...
- 基础拾遗------redis详解
基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...
- 基础拾遗------webservice详解
基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...
- AngularJS select中ngOptions用法详解
AngularJS select中ngOptions用法详解 一.用法 ngOption针对不同类型的数据源有不同的用法,主要体现在数组和对象上. 数组: label for value in a ...
- Solr系列五:solr搜索详解(solr搜索流程介绍、查询语法及解析器详解)
一.solr搜索流程介绍 1. 前面我们已经学习过Lucene搜索的流程,让我们再来回顾一下 流程说明: 首先获取用户输入的查询串,使用查询解析器QueryParser解析查询串生成查询对象Query ...
- Hadoop基础-Idea打包详解之手动添加依赖(SequenceFile的压缩编解码器案例)
Hadoop基础-Idea打包详解之手动添加依赖(SequenceFile的压缩编解码器案例) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.编辑配置文件(pml.xml)(我 ...
随机推荐
- sphinx全文检索引擎
今天刚刚学习了一下,就直接分享上去,有些还没有接触,如果有问题请指正,谢谢 sphinx是什么? Sphinx是一个全文检索引擎.主要为其他应用提供高速.低空间占用.高结果 相关度的全文搜索功能. S ...
- T-SQL几个简单的操作
视图 咱们先来了解下视图到底是什么意思,顾名思义,用简单的视觉方式展现复杂的内容 有什么功能呢, 各位应该还记得咱们之前练习的那个小小的数据库superise,里面有这么四张表,分别是: studen ...
- 实时监听input标签输入 实时监听文本框输入 避免中文输入法无法触发onkeyup事件的问题
前言: 对于实时监听输入,这种需求大多数都是用于一个联想字提醒,智能提醒.大家都知道onkeydown,onkeypress,onkeyup的在监听中文输入法或者右键粘贴的时候都存在一些弊端,不是那么 ...
- CF #344 D. Messenger KMP/Z
题目链接:http://codeforces.com/problemset/problem/631/D 给定两个压缩形式的字符串,如a3b5a4k7这样的形式 问A在B中出现次数. 分类讨论,如果A是 ...
- Python数据处理——numpy_3
通过前面两次的学习,基本上对numpy有了一定的认识,所以,接下来进一步对numpy学习.同时,最后以一个有趣的例子加深对numpy的理解. import numpy as np xarr = np. ...
- webService 下得 拦截
当我们 对webservice 接口的 拦截 更具权限 来 判断 是否可以调用 一下是我的 一个demo 首先 我们写一个 拦截类 import javax.xml.soap.SOAPExcept ...
- HTML5 拖放(Drag 和 Drop)功能开发——基础实战
随着HTML5的普及度越来越高,现在写代码也遇到一些了,经过同事的点播开展了一次Dojo活动用以技术交流,我也乘此机会将HTML5的拖放功能整理了一下. 简介 拖拽(Drag/Drop)是个非常普遍的 ...
- Tomcat 热部署
Tomcat热部署就是实现不停机的发布项目和更新项目 1.修改conf目录下的tomcat-users.xml文件 在<tomcat-user>添加如下配置 [root@localhost ...
- 最大流算法之EK(最短路径增广算法)
这是网络流最基础的部分--求出源点到汇点的最大流(Max-Flow). 最大流的算法有比较多,本次介绍的是其中复杂度较高,但是比较好写的EK算法.(不涉及分层,纯粹靠BFS找汇点及回溯找最小流量得到最 ...
- Spring装配bean--01组件扫描和自动装配
Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系 Spring提供了三种主要的装配机制: 在XML中进行显式配置 在Java中进行显式配置 隐式的bean发现机制和自动装 ...