最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 19:31:34
文档

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

关于angularjs的数据绑定的介绍,这里有详细的解释:本篇文章介绍angularjs的数据绑定的介绍,里面有很多与angularjs的数据绑定的方法和实例代码,希望对大家有帮助,现在一起来看这篇文章吧angularjs 的数据绑定在angularjs1.X 中存在了三种数据绑定的方式,用于数据的同步、展示。在 angularjs 1
推荐度:
导读关于angularjs的数据绑定的介绍,这里有详细的解释:本篇文章介绍angularjs的数据绑定的介绍,里面有很多与angularjs的数据绑定的方法和实例代码,希望对大家有帮助,现在一起来看这篇文章吧angularjs 的数据绑定在angularjs1.X 中存在了三种数据绑定的方式,用于数据的同步、展示。在 angularjs 1


本篇文章介绍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 关联起来,任何一侧的数据变更都会更新另一侧的数据。

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

    <input type="text" id="text" ng-model="name"/>

    通过 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. 最后浏览器重新渲染文本。

    One-way-binding

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

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

    <span ng-bind="name"> </span>
    <span>{{name}}</span>

    对于 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 时候取消监听。

    <span>{{::name}}</span>

    对于上面的代码,假设 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参考手册中学习),有问题的可以在下方留言提问。

    文档

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

    关于angularjs的数据绑定的介绍,这里有详细的解释:本篇文章介绍angularjs的数据绑定的介绍,里面有很多与angularjs的数据绑定的方法和实例代码,希望对大家有帮助,现在一起来看这篇文章吧angularjs 的数据绑定在angularjs1.X 中存在了三种数据绑定的方式,用于数据的同步、展示。在 angularjs 1
    推荐度:
    标签: 绑定 介绍 详细的
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top