AngularJS1.X学习笔记2-数据绑定详解
发布时间 - 2026-01-11 00:28:20 点击率:次上一篇从整体上认识了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、小结一下
与数据绑定的相关指令如下
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# angularjs
# 绑定数据
# angularjs的数据绑定
# 双向绑定
# 详谈AngularJs 控制器、数据绑定、作用域
# 深入浅析AngularJS中的一次性数据绑定 (bindonce)
# AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
# AngularJS入门教程之数据绑定原理详解
# AngularJS入门教程之数据绑定用法示例
# AngularJS 双向数据绑定详解简单实例
# AngularJS实践之使用NgModelController进行数据绑定
# 详解JavaScript的AngularJS框架中的作用域与数据绑定
# angularjs学习笔记之双向数据绑定
# Angularjs中数据绑定的实例详解
# 绑定
# 你好啊
# 中国
# 的是
# 实现了
# 可以用
# 我爱
# 错了
# 这样做
# 只在
# 上一篇
# 能将
# 不知道为什么
# 比较多
# 会将
# 这是因为
# 它不
# 解决方法
# 你会发现
# 不信任
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
魔方云NAT建站如何实现端口转发?
什么是javascript作用域_全局和局部作用域有什么区别?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
Python结构化数据采集_字段抽取解析【教程】
如何在阿里云购买域名并搭建网站?
浅谈Javascript中的Label语句
详解Huffman编码算法之Java实现
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
C语言设计一个闪闪的圣诞树
Python正则表达式进阶教程_复杂匹配与分组替换解析
Laravel如何实现事件和监听器?(Event & Listener实战)
制作旅游网站html,怎样注册旅游网站?
如何在 Pandas 中基于一列条件计算另一列的分组均值
如何在橙子建站中快速调整背景颜色?
php485函数参数是什么意思_php485各参数详细说明【介绍】
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
Laravel怎么使用Intervention Image库处理图片上传和缩放
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
如何在云指建站中生成FTP站点?
Laravel如何保护应用免受CSRF攻击?(原理和示例)
JavaScript如何实现倒计时_时间函数如何精确控制
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
如何在橙子建站上传落地页?操作指南详解
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
如何将凡科建站内容保存为本地文件?
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
免费视频制作网站,更新又快又好的免费电影网站?
如何快速上传建站程序避免常见错误?
EditPlus中的正则表达式实战(5)
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
如何确保FTP站点访问权限与数据传输安全?
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
UC浏览器如何设置启动页 UC浏览器启动页设置方法
Java类加载基本过程详细介绍
新三国志曹操传主线渭水交兵攻略
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
如何在万网利用已有域名快速建站?
Laravel PHP版本要求一览_Laravel各版本环境要求对照
SQL查询语句优化的实用方法总结
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
Python文件流缓冲机制_IO性能解析【教程】

