0

0

关于angularjs的数据绑定的介绍,这里有详细的解释

寻∝梦

寻∝梦

发布时间:2018-09-07 14:34:09

|

1305人浏览过

|

来源于php中文网

原创

本篇文章介绍angularjs的数据绑定的介绍,里面有很多与angularjs的数据绑定的方法和实例代码,希望对大家有帮助,现在一起来看这篇文章吧

angularjs 的数据绑定

在angularjs1.x 中存在了三种数据绑定的方式,用于数据的同步、展示。在 angularjs 1.3  之前,angularjs 只存在两种方式: two-way-bindingone-way-bindng , 而后则引入了称为one-time-binding 的绑定机制。

目前angularjs 中存在以下三种数据绑定方式:

  • two-way-binding

  • one-way-binding

  • one-time-binding

two-way-binding

angularjs 中的 Two-way-binding 的作用是将 ModelView 关联起来,任何一侧的数据变更都会更新另一侧的数据。

常见场景是页面中的输入区域。双向绑定可以很容易的将输入控件的值关联到数据模型中。

通过 ng-model 我们可以很容易的将输入框(view)的值和 name (Model) 关联起来。在双向数据流的作用下,无论是我们修改输入框的值还是修改 name,另外一侧都将及时更新到新数据。

ng-modelangularjs 内置的一个指令用来实现双向绑定。ng-model 在不同生命周期中,有不同的逻辑处理。

  1. compilation phase:

    1. ng-model 指令和 input 指令会被合并处理给 input 标签 注册 keydown事件(DOM Event);

    2. interpolation 则注册一个 $watch 用来订阅 change 事件(angularjs Event)。

  2. Runtime Phase

    1. 用户输入触发 keydown

    2. input  指令捕获 keydown 事件,调用 $apply 来请求更新动作。

    3. angularjs 更新值到 Model

    4. 进入 $digest 上下文

    5. $watch 表达式检测到  Model   发生了 change,通知interpolation ,请求 更新 DOM

    6. angularjs 托管结束,退出托管,交还控制权到 JavaScript 执行上下文。

    7. 最后浏览器重新渲染文本。

      凡客系统
      凡客系统

      使用:1.上传到服务器或空间2.运行http://域名/install.php栏目介绍:1.网站常规设置用于设置网站的相关参数,还淘宝app2.用户信息管理用于管理用户的,浏览添加删除等3.商品汇采集用于采集商品的,我将淘宝上的商品分为普通商品和秒杀商品,还有的秒杀商品采集4淘宝链接生成用于生成淘宝商品推广链接,这个是根据app生成的,所以要填写app5.商品详细设置这个模块主要是用于管理商品的,

      下载

One-way-binding

不同于 Two-way-binding的双向流动, one-way-binding 的数据流向是单向,即只会从 model 流向 view ,而不会从 view 流向 model。 因此, one-way-binding 用来展示数据,而不是获取输入。

angularjs 中, one-way-binding 则有两种语法: ng-bind{{expression}}

 
{{name}}

对于 one-way-binding来说,内部机制和 two-way-binding 有部分相同的机制。

  1. compilation phase:

    1. interpolation 注册一个 $watch 用来订阅 change 事件(angularjs Event)。

  2. runtime phase:

    1. angularjs 进入 $digest

    2. expression$watch 检测到数据发生变更,通知interpolation ,请求 更新 DOM

    3. angularjs 托管结束,退出托管,交还控制权到 JavaScript 执行上下文。

    4. 最后浏览器重新渲染文本。

one-time-binding

1.3 之后,angularjs 实现了一个叫 one-time-binding 的机制。本质上它的机制和其他两种方式没太多差异,但在数据更新时候表现的不太一样。

one-time-binding 同样会注册 $watch 来监听数据变化,但它会在第一次检测到数据 非 Undefined 时候取消监听。

{{::name}}

对于上面的代码,假设 nameundefined -> angularjs -> angular ,最终渲染的结果是 angularjs ,而不是 angular 。 这就是 one-time-binding 的特殊之处,当 nameundefined 变化为 angularjs之后,被认定为 name 的状态已经是 stable ,因此将取消 $watch , 即不再监听数据变化。

那么,假设 name'' -> angularjs-> angular, 则渲染结果是 '' ,即空字符串(第一次的值)。因为 one-time-binding 在计算 stable 时候使用的 严格相等,即 newVal === undefined, 如果是,则继续保留 $watch 等待下一次的比较;否则,状态变更为 stable,取消 $watch, 数据转化为最终态。

结束

在我看来,angularjs  核心在于 angularjs context$digest

angularjs context 保证 angularjs 可以捕获到各种事件,用户输入、鼠标事件、键盘事件、甚至 $settimeout$http 等异步行为的状态流转。

$digest 则保证 angularjs 可以确认是否要更新数据。

本篇关于angularjs的文章到这也就结束了(想看更多就到PHP中文网angularjs参考手册中学习),有问题的可以在下方留言提问。


相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

150

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

88

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

90

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

61

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

493

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

16

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

12

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

5

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
AngularJS教程
AngularJS教程

共24课时 | 2.2万人学习

走进 ES6 新标准语法
走进 ES6 新标准语法

共15课时 | 1.5万人学习

AngularJS 中文手册
AngularJS 中文手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号