AngularJS1.X学习笔记2-数据绑定
上一篇从整体上认识了Angular,从现在开始更加深入的学习Angular的特性。本次学习的是数据绑定。应该所有的MVC框架都会用到数据绑定,比如我所知道的ThinkPHP、struts等,只有实现了数据绑定才能将模型层和视图层分离,实现MVC。Angular的数据绑定比较特别,它支持双向数据绑定。
1、ng-bind
- <!DOCTYPE html>
- <html lang="en" ng-app="myApp">
- <head>
- <meta charset="UTF-8">
- <title>databinding1</title>
- </head>
- <body>
- <h1 ng-controller='dataCtrl' ng-bind='data'>
- </h1>
- <script type="text/javascript" src="../node_modules/angular/angular.min.js"></script>
- <script type="text/javascript">
- angular.module('myApp',[])
- .controller('dataCtrl',function($scope){
- $scope.data = "你好啊!";
- })
- </script>
- </body>
- </html>
ng-bind实现了一个简单单向绑定。
2、{{}}
类似ng-bind,用的比较多。
- <!DOCTYPE html>
- <html lang="en" ng-app="myApp">
- <head>
- <meta charset="UTF-8">
- <title>databinding1</title>
- </head>
- <body>
- <h1 ng-controller='dataCtrl'>
- {{data}}
- </h1>
- <script type="text/javascript" src="../node_modules/angular/angular.min.js"></script>
- <script type="text/javascript">
- angular.module('myApp',[])
- .controller('dataCtrl',function($scope){
- $scope.data = "你好啊!";
- })
- </script>
- </body>
- </html>
这种绑定的缺点是,开始加载时可能会出现类似{{data}}这样的东西。
解决方法是使用ng-bind或ng-cloak,ng-cloak应该只在有数据绑定的地方使用,否则处理中用户将看到空白。
- <!DOCTYPE html>
- <html lang="en" ng-app="myApp">
- <head>
- <meta charset="UTF-8">
- <title>databinding2</title>
- </head>
- <body ng-cloak>
- <h1 ng-controller='dataCtrl'>
- {{data}}
- </h1>
- <script type="text/javascript" src="../node_modules/angular/angular.min.js"></script>
- <script type="text/javascript">
- angular.module('myApp',[])
- .controller('dataCtrl',function($scope){
- $scope.data = "你好啊!";
- })
- </script>
- </body>
- </html>
我测试了一下ng-cloak,不知道为什么不行,有人知道的话请告知一下。
3、ng-bind-html
这个指令可以用html的方式处理数据,它不会将html代码解析成实体。下面对比一下ng-bind和ng-bind-html.
- <!DOCTYPE html>
- <html lang="en" ng-app="myApp">
- <head>
- <meta charset="UTF-8">
- <title>databinding3</title>
- </head>
- <body>
- <div ng-controller='dataCtrl' ng-bind='data'>
- </div>
- <script type="text/javascript" src="../node_modules/angular/angular.min.js"></script>
- <script type="text/javascript">
- angular.module('myApp',[])
- .controller('dataCtrl',function($scope){
- $scope.data = "<h1 style='color:red;'>你好啊</h1>";
- })
- </script>
- </body>
- </html>
- <!DOCTYPE html>
- <html lang="en" ng-app="myApp">
- <head>
- <meta charset="UTF-8">
- <title>databinding3</title>
- </head>
- <body>
- <div ng-controller='dataCtrl' ng-bind-html='data'>
- </div>
- <script type="text/javascript" src="../node_modules/angular/angular.min.js"></script>
- <script type="text/javascript">
- angular.module('myApp',[])
- .controller('dataCtrl',function($scope){
- $scope.data = "<h1 style='color:red;'>你好啊</h1>";
- })
- </script>
- </body>
- </html>
换成ng-bind-html时出错了
这是因为Angular默认是不信任html的,所以要这样做。
- <!DOCTYPE html>
- <html lang="en" ng-app="myApp">
- <head>
- <meta charset="UTF-8">
- <title>databinding3</title>
- </head>
- <body>
- <div ng-controller='dataCtrl' ng-bind-html='data'>
- </div>
- <script type="text/javascript" src="../node_modules/angular/angular.min.js"></script>
- <script type="text/javascript">
- angular.module('myApp',[])
- .controller('dataCtrl',function($scope,$sce){
- $scope.data = $sce.trustAsHtml("<h1 style='color:red;'>你好啊</h1>");
- })
- </script>
- </body>
- </html
这样就可以了。
4、ng-bind-template
ng-bind只接受单个数据绑定表达式,而ng-bind-template则相对灵活些。
- <!DOCTYPE html>
- <html lang="en" ng-app="myApp">
- <head>
- <meta charset="UTF-8">
- <title>databinding3</title>
- </head>
- <body>
- <div ng-controller='dataCtrl' ng-bind-template='{{data1}}爱{{data2}} '>
- </div>
- <script type="text/javascript" src="../node_modules/angular/angular.min.js"></script>
- <script type="text/javascript">
- angular.module('myApp',[])
- .controller('dataCtrl',function($scope,$sce){
- $scope.data1 = "我";
- $scope.data2 = "中国";
- })
- </script>
- </body>
- </html>
<!-- 我爱中国-->
5、ng-non-bindable
有时我们使用了{{}}但是我们并不是要绑定数据,直接用会出错,所以要像这样
- <!DOCTYPE html>
- <html lang="en" ng-app="myApp">
- <head>
- <meta charset="UTF-8">
- <title>databinding1</title>
- </head>
- <body>
- <h1 ng-controller='dataCtrl' ng-non-bindable>
- ng中绑定数据的方法是{{data}}
- </h1>
- <script type="text/javascript" src="../node_modules/angular/angular.min.js"></script>
- <script type="text/javascript">
- angular.module('myApp',[])
- .controller('dataCtrl',function($scope){
- //$scope.data = "你好啊!";
- })
- </script>
- </body>
- </html>
6、双向数据绑定ng-model
双向数据绑定允许元素从用户处收集数据以改变程序状态。
- <!DOCTYPE html>
- <html lang="en" ng-app="myApp">
- <head>
- <meta charset="UTF-8">
- <title>databinding5</title>
- </head>
- <body>
- <div ng-controller='dataCtrl'>
- <h1>{{data}}</h1>
- <input type="text" name="data" ng-model="data">
- </div>
- <script type="text/javascript" src="../node_modules/angular/angular.min.js"></script>
- <script type="text/javascript">
- angular.module('myApp',[])
- .controller('dataCtrl',function($scope){
- $scope.data = "你好啊!";
- })
- </script>
- </body>
- </html>
你会发现文本框的内容和h1中的内容同步变化。
7、小结一下
与数据绑定的相关指令如下
下面开始学习模板指令。2017-03-31 20:41:59
AngularJS1.X学习笔记2-数据绑定的更多相关文章
- SpringMVC:学习笔记(5)——数据绑定及表单标签
SpringMVC——数据绑定及表单标签 理解数据绑定 为什么要使用数据绑定 基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单: 按照我们以往所学,如果要获取请求的所有参数 ...
- 微信小程序学习笔记二 数据绑定 + 事件绑定
微信小程序学习笔记二 1. 小程序特点概述 没有DOM 组件化开发: 具备特定功能效果的代码集合 体积小, 单个压缩包体积不能大于2M, 否则无法上线 小程序的四个重要的文件 *js *.wxml - ...
- AngularJS1.X学习笔记1-整体看看
听说 明天是愚人节,这与我有什么关系呢!我可 不想被愚弄,但是但是,我这么笨怎么才能不被愚弄呢?左思右想,我决定从现在开始闭关,闭关干啥哩?学习!学习AngularJS.以前学习过Angular的,不 ...
- AngularJS1.X学习笔记5-加强版的表单
大家愚人节快乐!表单是沟通服务器端和客户端的桥梁,为数据从客户端传到服务端打开了一扇大门.AngularJS增加了一些新特性,使我们能够更加方便的操作表单.OK!开始学习!学习使我快乐. 一.双向数据 ...
- AngularJS1.X学习笔记3-内置模板指令
前面学习了数据绑定指令,现在开始学习内置模板指令.看起来有点多,目测比较好理解.OK!开始! 一.ng-repeat 1.基本用法 <!DOCTYPE html> <html lan ...
- Angular4.0从入门到实战打造在线竞拍网站学习笔记之四--数据绑定&管道
Angular4.0基础知识之组件 Angular4.0基础知识之路由 Angular4.0依赖注入 数据绑定 数据绑定允许你将组件控制器的属性和方法与组件的模板连接起来,大大降低了开发时的编码量. ...
- AngularJS1.X学习笔记6-控制器和作用域
经过一番艰苦卓绝的鏖战,我终于来到了控制器和作用域部分.控制器作为MVC的C,其重要性不可谓不重要:作用域决定了你可以拿到哪些东西,亦是分外重要.现在就来学习一下两个东西.去看看$apply,$wat ...
- AngularJS1.X学习笔记4-内置事件指令及其他
AngularJS为我们定义了一系列事件指令,方便我们对用户的操作作出响应.甚至他还有一个可选模块提供了触摸事件和手势事件的支持,为移动端开发提供了可能.现在开始学习一下AngularJS的事件指令. ...
- AngularJS1.X学习笔记13-动画和触摸
本文主要涉及了ngAnimation和ngTouch模块,自由男人讲的比较少,估计要用的时候还要更加系统的学习一下. 一.安装 没错,就是酱紫. 二.玩玩动画 <!DOCTYPE html> ...
随机推荐
- VS2008编译汇编程序的问题
在VS2008 pro里已经集成了MASM,经过相关设置后,编译出了程序,但是执行后,说少msvcr90.dll39944然后自己写了个39945 那个testprintf是执行正常的.虽然两个都有引 ...
- devexpress控件layoutview特效之一旋转木马的实现
1.devexpress有很多很好的特效,最近做了个旋转木马的特效,给大家分享下.效果图如下: 2.这里的控件为gridcontrol,里面的view为layoutview.数据绑定的代码与其他gri ...
- idea常用设置
Idea删除当前行的快捷键是Ctrl+y,复制当前行的快捷键是Ctrl+d,和eclipse的习惯不一样.虽然可以一键把idea的快捷键映射成eclipse,但是这样做代价太大,如果这样,idea的官 ...
- 在 Windows 上测试 Redis Cluster的集群填坑笔记
redis 集群实现的原理请参考http://www.tuicool.com/articles/VvIZje 集群环境至少需要3个节点.推荐使用6个节点配置,即3个主节点,3个从节点. 新 ...
- linux c++ 加载动态库常用的三种方法
链接库时的搜索路径顺序:LD_LIBRARY_PATH --> /etc/ld.so.conf --> /lib,/usr/lib 方法1. vi .bash_profile 设置环 ...
- iOS runtime的应用实例
一直想弄明白runtime是怎么回事,因为面试的时候这是一道必备问题,但是平时用的机会真的少之又少,我一度以为runtime只是用来装13的利器,没什么卵用.但是随着学习的增多,发现runtime ...
- Python脚本收集腾讯云CDN日志,并入ELK日志分析
负责搭建公司日志分析,一直想把CDN日志也放入到日志分析,前些日志终于达成所愿,现在贴出具体做法: 1.收集日志 腾讯云CDN日志一般一小时刷新一次,也就是说当前只能下载一小时之前的日志数据,但据本人 ...
- 【转】Mysql分页语句Limit用法
http://qimo601.iteye.com/blog/1634748 FAQ: MYSQL limit,offset 区别 SELECT keyword FROM `keyword_rank` ...
- ASP.NET Core MVC上传、导入、导出知多少
前言 本君已成夜猫子,本节我们来讲讲ASP.NET Core MVC中的上传,这两天才研究批量导入功能,本节顺便简单搞搞导入.导出,等博主弄妥当了再来和大家一并分享. .NET Core MVC上传 ...
- 项目架构开发:数据访问层之Cache
数据访问层简单介绍 数据访问层,提供整个项目的数据访问与持久化功能.在分层系统中所有有关数据访问.检索.持久化的任务,最终都将在这一层完成. 来看一个比较经典的数据访问层结构图 大概可以看出如下信息 ...