一、数据双向绑定

angular(下面统一简称ng)强大的地方莫过于它内置的数据双向绑定功能,下面我们通过一个简单的例子来演示ng强大的双向绑定数据的能力。

代码如下:

1、dom结构:

1.<!DOCTYPE html>
2.<html lang="en" ng-app="myApp">
3.<head>
4. <meta charset="UTF-8">
5. <title>Document</title>
6. <script src="js/angular.js"></script>
7.</head>
8.<body>
9. <form ng-controller="userInfoCtrl">
10. <input type="text" ng-model="userInfo.name">
11. {{userInfo.name}}
12. <p ng-bind="userInfo.age"></p>
13. </form>
14.
15.</body>
16.</html>

2、js代码:

1.var app = angular.module('myApp',[]);
2. app.controller('userInfoCtrl',function($scope){
3. $scope.userInfo = {
4. name: '张三',
5. age: '18'
6. }
7. })
8. app.controller('userInfoCtrl',['$scope',function($scope){
9. $scope.userInfo = {
10. name: '张三',
11. age: '19'
12. }
13. }])

上面的例子简单的实现了ng的双向绑定功能,那么到底是怎么实现的呢?

1、先加载angular.js文件;

2、在根节点html上(也可以是其他任何一个节点,在哪里添加,ng的边界就在哪里产生)添加ng-app指令,它会告诉浏览器,从这个地方开始,里面的内容都用ng去解析渲染;

3、给form添加ng-controller,这是添加控制器(也可以叫作用域)的指令,它的作用是创建一个隔离的$scope对象,什么是$scope?

提到$scope,还得先从$rootscope说起,$rootScope是ng中最接近全局作用域的对象。在$rootScope上附加太多业务逻并不是好主意,这与污染JavaScript的全局作用域是一样的。$scope对象就是一个普通的JavaScript对象,我们可以在其上随意修改或添加属性。

4、给input添加ng-model指令,值等于变量userInfo.name。ng-model就是实现ng数据双向绑定的指令。ng-model指令用来将input、 select、 textarea或自定义表单控件同包含它们的作用域中的属性进行绑定。(这是第一种绑定方法);

5、{{ }}语法是AngularJS内置的模板语法,它会在内部$scope和视图之间创建绑定。基于这个绑定,只要$scope发生变化,视图就会随之自动更新。(这是第二种绑定方法);

6、尽管可以在视图中使用{{ }}模板语法(ng内置的方式),我们也可以通过ng-bind
指令实现同样的行为。

接下来是Js代码部分的实现

7、ng允许我们使用angular.module()方法来声明模块,这个方法能够接受两个参数,第一个是模块的名称,第二个是依赖列表,也就是可以被注入到模块中的对象列表。接下来,就可以在angular.module(‘myApp’)返回的对象上创建我们的应用了。

8、通过ng-controller创建一个作用域,并对作用域中的$scope对象进行操作;

9、在userInfoCtrl这个作用域中,添加控制器逻辑处理的代码。

10、总结:在ng中,通过controller控制器连接了视图与逻辑层,任何一方发生变化都会引起另一方的变化,而实现这个功能的方法则可以通过:ng-model、{{ }}或者ng-bind。

二、常见的几种页面判断

1.ng-switch

ng-switch用来判断输入框的值和预定义的值是否匹配,如果匹配,则显示预定义的视图,反之则显示默认的视图。这个指令和ng-switch-when及on=”propertyName”一起使用,可以在propertyName发生变化时渲染不同指令到视图中。在下面的例子中,当person.name是Ari时,文本域下面的div会显示出来,并且这个人会获得胜利:

1.<input type="text" ng-model="person.name"/>
2.<div ng-switch on="person.name">
3. <p ng-switch-default>And the winner is</p>
4. <h1 ng-switch-when="Ari">{{ person.name }}</h1>
5.</div>
2.ng-if

使用ng-if指令可以完全根据表达式的值在DOM中生成或移除一个元素。如果赋值给ng-if的表达式的值是false,那对应的元素将会从DOM中移除,否则对应元素的一个克隆将被重新插入DOM中。

1.<div ng-if="2+2===5">
2. Won't see this DOM node, not even in the source code
3.</div>

因为2+2并不等于5,所以表达式为false,最后这个div会被移除。

3.ng-show、ng-hide

ng-show和ng-hide根据所给表达式的值来显示或隐藏HTML元素。当赋值给ng-show指令的
值为false时元素会被隐藏。类似地,当赋值给ng-hide指令的值为true时元素也会被隐藏。

1.<div ng-show="2 + 2 == 4">
2. 2 + 2 is 4, do show
3.</div>
4.<div ng-hide="2 + 2 == 5">
5. 2 + 2 isn't 5, don't hide
6.</div>

从结果上来看,ng-if和ng-show/ng-hide似乎效果差不多,但两者的最大区别在于,前者会移除dom结构,而后者不会移除dom结构,只是通过样式的display:none和display:block来控制。

 

angular入门学习文档之一的更多相关文章

  1. Apache Pig入门学习文档(一)

    1,Pig的安装    (一)软件要求    (二)下载Pig      (三)编译Pig 2,运行Pig    (一)Pig的所有执行模式    (二)pig的交互式模式    (三)使用pig脚本 ...

  2. 2013 最新的 play web framework 版本 1.2.3 框架学习文档整理

    Play framework框架学习文档 Play framework框架学习文档 1 一.什么是Playframework 3 二.playframework框架的优点 4 三.Play Frame ...

  3. Ext JS 6学习文档-第8章-主题和响应式设计

    Ext JS 6学习文档-第8章-主题和响应式设计 主题和响应式设计 本章重点在 ExtJS 应用的主题和响应式设计.主要有以下几点内容: SASS 介绍和入门 主题 响应式设计 SASS 介绍和入门 ...

  4. 全网首发,腾讯T3-3整理Netty学习方案(体系图+项目+学习文档)

    前言: 想要学好一门技术,最起码要对他有一定的了解,起码听说过相应的底层原理的东西吧,最起码你要有一点能和别人交流的内容吧,下面是我精简的一点内容,希望对于大家了解netty能有一点帮助 Netty是 ...

  5. Openstack api 学习文档 & restclient使用文档

    Openstack api 学习文档 & restclient使用文档 转载请注明http://www.cnblogs.com/juandx/p/4943409.html 这篇文档总结一下我初 ...

  6. Openstack python api 学习文档 api创建虚拟机

    Openstack python api 学习文档 转载请注明http://www.cnblogs.com/juandx/p/4953191.html 因为需要学习使用api接口调用openstack ...

  7. .Net 官方学习文档

    .Net 官方学习文档:https://docs.microsoft.com/zh-cn/dotnet/articles/welcome

  8. soapUI学习文档(转载)

    soapUI 学习文档不是前言的前言记得一个搞开发的同事突然跑来叫能不能做个WebService 性能测试,当时我就凌乱了,不淡定啊,因为我是做测试的,以前连WebService 是什么不知道,毕竟咱 ...

  9. NodeJS-001-Nodejs学习文档整理(转-出自http://www.cnblogs.com/xucheng)

    Nodejs学习文档整理 http://www.cnblogs.com/xucheng/p/3988835.html 1.nodejs是什么: nodejs是一个是javascript能在后台运行的平 ...

随机推荐

  1. django-groundwork

    我的环境是windows7 + python34 + django1.8 下面两篇文章提到了django的scaffold,感觉是一个挺不错的功能: Django实战(3):Django也可以有sca ...

  2. Bash shell 常用快捷键

    1,ctrl+c  :强制终止当前命令 2,ctrl+l   :清屏 3,ctrl+a  :光标移动到行首 4,ctrl+e   :光标移动到行尾 5,ctrl+u   :从光标所在位置删除到行首 6 ...

  3. 4011: [HNOI2015]落忆枫音

    4011: [HNOI2015]落忆枫音 链接 分析: 原来是一个DAG,考虑如何构造树形图,显然可以给每个点找一个父节点,所以树形图的个数就是$\prod\limits_u deg[u]$. 那么加 ...

  4. Flutter - 创建横跨所有页面的侧滑菜单

    前一篇博客讲到了如何创建侧滑菜单,但是再实际使用过程中,会发现,这个策划菜单只能在首页侧滑出来. 当导航到其他页面后,侧滑就不管用了.这也有点不符合良好的用户体验设计.Google Play就是很好的 ...

  5. Qt-网易云音乐界面实现-2 红红的程序运行图标,和相似下方音乐条

    被调出来出差了,这次出差可以说是非常不开心,这次出差也算给我自己提了个醒吧,那就是注意自己的精力,自己的口碑,和比人对自己的信任.具体内容如下 我们公司有一款硬件的设备的电路是外包给某个人来做的,这个 ...

  6. WebGL之sprite精灵效果显式数字贴图

    接着前一篇<WebGL实现sprite精灵效果的GUI控件>,我们继续开发我们的数字系统GUI控件,因为这套数字系统是基于sprite效果的,所以数字随相机转动而旋转(永远面对相机),随场 ...

  7. java多线程之述解

    说起线程 就不得不提进程 他们之间的关系很紧密 进程:内存中运行的应用程序 每个进程都有自己的一块内存空间 而线程是进程中的一个执行单元 一个进程中可以有多个线程 多线程的好处就是可以并发操作程序 将 ...

  8. shell小记

    1.以#!/bin/bash 开头2.执行方式 bash sh ./ `script`3.变量: 系统变量  自定义变量  --->export 可导出为全局环境变量        set显示所 ...

  9. 基于Python的信用评分卡模型分析(二)

    上一篇文章基于Python的信用评分卡模型分析(一)已经介绍了信用评分卡模型的数据预处理.探索性数据分析.变量分箱和变量选择等.接下来我们将继续讨论信用评分卡的模型实现和分析,信用评分的方法和自动评分 ...

  10. 使用git-premit时的问题

    package.json 相关配置如下 { "scripts": { "lint": "eslint pages/* component/* --fi ...