AngularJS中的一次性数据绑定 (bindonce)

angular-once, AngularJS的一次绑定.zip angular-once, AngularJS的一次绑定 的角度一次AngularJS的一次绑定。为什么?arraylist是一个很好的框架,但是它用来显示大量数据,因为它的绑定机制很慢。当通过 {{ }} 或者 ng-bind 指令绑定数据时,Angular 将在每次执行 Angular 立即下载

一、理解双向数据绑定和监听器

为了实现双向数据绑定,AngularJS使用了$watch API来观察期作用域中的模型变化。具体的作用域取决于你的代码如何编写。如果你没有创建一个自作用域,就是说没有使用ngController指令在你的DOM和你的控制器代码之间创建一个关联,你可能处理的是跟作用域$rootScope,这个作用域由ngApp自动创建,并且是应用中所有作用域的父作用域,当然,如果你选择手动启动AngularJS,那情况就另当别论了。每当你创建了一个数据绑定时,AngularJS就会自动创建一个监听器来监听这个数据的变化。比如说下面这个简单的例子:

<p>Hello {{name}}!</p>

在这个例子中,我们使用了插值指令,这个指令会注册一个监听器来监听相应作用域中属性name的变化,并在该属性发生变化时将它实时反应到DOM中。

添加下面的代码,你的name属性将会自动的被赋值为Pascal:

angular.module('myApp', [])
    .run(function ($rootScope) {
     $rootScope.name = "Pascal";
}]);
通过上面的代码,我们就成功的使用了插值指令创建了在试图上创建了一个数据绑定。现在,如果name属性发生变化,视图将会自动发生更新。比如说我们添加下面的代码,在按钮点击是修改name的值:
<button ng-click="name = 'Christoph'">Click me!</button>

  此时,点击按钮,我们可以将name的值修改为Christoph,同时我们会触发一个$digest循环来更新DOM中相应的部分。在上面的例子中,你看的知识单向数据绑定。然而,你完全可以使用ngModel指令来将视图中发生的变化实时的反应到模型中。

上面的双向绑定魔法的实现完全依赖于$digest循环,当$digest循环被触发时,AngularJS将会去处理遍历当前作用域和子作用域中的所有监听器,然后通过检查模型中发生的变化来更新DOM中的值,直到模型不再发生变化为止。一旦$digest循环执行完成,浏览器会重新渲染DOM来反应模型数据变化。

 现在,我们大概了解了AngularJS的数据绑定机制,你可能会问我们为何还需要一次性数据绑定。

由于AngularJS使用监听器来实现数据绑定。当监听器越来越多时,可能会出现一些性能上的问题。由于在注册监听器使,同时会注册一个回调函数,以便在$digest循环执行时能够相应的更新视图。也就是说,监听器越多,AngularJS需要处理的回调函数也就越多。

现在假设在视图中有很多值需要被AngularJS处理。比如说像上面使用插值指令来进行数据绑定,虽然我们可能并不想让这个值只绑定一次,比如说上面的Pascal,在应用代码执行的整个过程中这个属性都不会发生改变,但是AngularJS默认依然会在这个属性上绑定一个监听器和回调函数。因此,在$digest时,AngularJS依然会去特意的关注这个值,这实在是有些过头了。

二、一次性数据绑定(One-time bindings)

这就是我们需要一次性数据绑定的原因。在AngularJS的文档中,我们可以清楚的了解到这个新特性的作用:一次性数据绑定表达式可以在数据稳定之后,不需要在$digest循环中重计算…

一次性数据绑定的出现解决了前面提到的由监听器太多带来的性能问题。那么我们应该如何使用一次性数据绑定呢?

使用一次性数据绑定非常的简单,我们只需要在表达式之前加上双冒号::即可。比如,前面我们使用了插值指令将name属性绑定到了视图中:

<p>Hello {{name}}!</p>

使用一次性数据绑定,我们这样写:

<p>Hello {{::name}}!</p>

在AngularJS 1.3版本中,你可以在任何AngularJS的表达式中使用一次性数据绑定。即使在诸如ng-repeat这样严重依赖于双向绑定的指令中,你依然可以使用它。




深入浅析AngularJS中的一次性数据绑定 (bindonce) 主要介绍了AngularJS中的一次性数据绑定 (bindonce)知识,非常不错,具有参考借鉴价值,需要的朋友可以参考下 立即下载

相关推荐

GIS分析-利用K-Means方法进行地震分析

通过“聚类”可以获得有关我们所拥有的数据的各种线索,这是数据挖掘技术之一。分析创建的组有助于决策过程。在这项研究中,我们将使用数据挖掘工具之一的K-Means方法研究安纳托利亚东部地区近100年发生的地震的空间分布,并试图获得有用的信息,以供未来的研究使用。我从局地震目录页面获得了研究所需的地震数据,并从获得了区域边界数据。

gis收藏家的博客 1568

谈谈AngularJS中的一次性数据绑定

AngularJS 1.3版本正式发布,其中添加了很多的性特性,同时也对之前的一些bug做了修复,最重要的是其中包含一些突破性的变化。其中最重要的一项就是添加了一次性数据绑定。等等,一次性数据绑定?这听起来似乎和AngularJS一直宣扬的双向数据绑定思想完全背离了吗?当然,AngularJS的双向数据绑定一直是AngularJS最重要的特性之一。然而,为了实现双向数据绑定,AngularJS需要

Zhangxi 4166

sentaurus学习笔记(HFET_pGate_GaN仿真)(五)

`(sdedr:define-constant-profile`和`(sdedr:define-constant-profile-region`命令用于定义并应用一个恒定的活性硼掺杂浓度剖面`"ndop_GaN_gate_const"`到氮化镓栅极层上,其值为`NpGaN_gate`。- `"Oxide"`指定了这一层的材料名称(在这里代表氧化层),而`"nucleation"`是这一层在仿真中的标识名称。- `"GaN"`指定了这一层的材料名称,而`"GaN_gate"`是这一层在仿真中的标识名称。

qq_52640792的博客 940

Chrome 中的 Threading 和 Tasks

线程 每个 chrome 进程都包含有: 一个主线程: 在 browser 进程中负责:更新 UI; 在 renderer 进程中负责:运行 Blink; 一个 IO 线程: 在 browser 进程中负责:处理 IPC 和网络请求; 在 renderer 进程中负责:处理 IPC 请求; 一些处理特殊操作的线程; 一个处理通用操作的线程池; 大部分的线程都包含有一个...

相见不如怀念 2719

嵌入式状态机编程-QP状态机框架与常见状态机方法

状态机基本术语 现态:是指当前所处的状态。 条件:又称为“事件”,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。 动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。 次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。 传统有限状态机Fsm实现方法 如图,是一个定时计数器,计数器存在两种状态,一种为设置状态,一种为计时状态 设

qq_36969440的博客 9661

【100%通过率】华为OD机试真题 JavaScript【数字最低位排序】【最低位排序】

2023华为OD机试真题 JavaScript【数字最低位排序】【最低位排序】 给定一个非空数组(列表) 起元素数据类型为整型 请按照数组元素十进制最低位从小到大进行排序 十进制最低位相同的元素,相对位置保持不变 当数组元素为负值时,十进制最低为等同于去除符号位后对应十进制值最低位

MISAYAONE的博客 585

多线程开发中,多用消息传递,少用锁

有几个注入点可以从其实现的外部控制绑定行为。};}};如果在方法base::Bind的接收器上为true ,则 检查接收器的评估结果是否为true,并在其评估为false时取消调用。您可以专门将外部智能指针作为弱指针。在调用目标函数之前,为每个绑定的参数调用。您可以专注这个定义参数的包装,例如,,和。Windows提供了非常原始的工具来构建用户界面。该系统提供了一些基本控件和本机窗口容器,但是构建自定义用户界面很困难。

m0_73257876的博客 706

思远耳机充电芯片-SY5501

BES2700ZP-本文档介绍了思远耳机充电芯片SY5501的使用方法,包括芯片引脚功能说明(VCC、IRQ、RST等)、通信机制(VIN引脚的双重作用)以及相关注意事项。提供了代码片段、调试日志和电路图作为参考,并列出了待解决的问题清单。该芯片需要配合特定充电仓使用,支持私有协议和用户自定义通信功能。

云淡风轻 123

Angular Once 使用教程

Angular Once 使用教程 项目介绍 Angular Once 是一个用于 AngularJS 的库,旨在通过一次性绑定(one-time bindings)来提高应用性能。在处理大量数据时,AngularJS 的默认双向绑定机制可能会导致性能问题,因为每个绑定都会设置一个监听器(watcher),这些监听器会在每次 Angular 事件循环中执行。Angular Once 通过提供一次性...

gitblog_00590的博客 572

Python 爬虫实战:龙虎榜机构买卖数据爬取与代码详解(附数据分析)

龙虎榜是证券市场中重要的市场信息之一,记录了当日大宗交易及机构买卖情况,包括机构名称、买卖方向、成交金额、成交股数、买入卖出价格等信息。通过分析龙虎榜数据,投资者可以更好地了解市场动向和机构投资者的行为,从而做出更准确的决策。本文将详细介绍如何使用 Python 编写爬虫程序,高效地抓取龙虎榜机构买卖数据,并进行数据分析。我们将从环境搭建、数据抓取、数据存储到数据分析等关键步骤逐一展开,帮助读者掌握完整的爬虫实战流程。

u014481728的博客 702

IgH EtherCAT 从入门到精通:第 4 章 网络设备驱动选型与配置

摘要:本章详细介绍了EtherCAT主站网络设备驱动的选型与配置。IgH EtherCAT Master提供Generic通用驱动和Native原生驱动两种方案:Generic驱动通过Linux Socket接口实现,兼容性强但实时性较差;Native驱动通过修改网卡驱动绕过内核协议栈,具有更低延迟和更小抖动。文章具体分析了e1000/e1000e/igb/igc等Intel网卡驱动以及r8169/8139too等Realtek驱动的配置方法,并提供了驱动选型建议。对于实时性要求高的场景,推荐使用Nativ

从事嵌入式linux android驱动开发,拥有全栈能力 303

AngularJS常用插件与指令收集

AngularJS常用插件与指令收集 angularjs 组件列表 bindonce UI-Router Angular Tree angular-ngSanitize模块-$sanitize服务详解 使用 AngularJS 开发一个大规模的单页应用 AngularJS常用插件与指令收集 angular-ui帮助文档 UI-Rou...

LHL62411570的专栏 175

课程1:认识Asp.net Core Web API

本文是《.Net Core从零学习搭建权限管理系统》教程专栏的导航站(点击链接,跳转到专栏主页,欢迎订阅,持续更新…)专栏介绍:以实战为线索,基于.Net 7 + REST + Vue、前后端分离,不依赖任何第三方框架,从零一步一步讲解权限管理系统搭建。专栏适用于人群:Web后端开发人员Web API是一个很广泛的概念,Asp.net Core Web API是.NET框架用于创建RESTful风格的项目、用于轻松构建可供多个客户端访问的HTTP服务。1、支持RestFul风格编程;

成长的足迹 1255

angularjs移除不必要的$watch

在我们的web page,特别是移动设备上,太多的angular $watch将可能导致性能问题。这篇文章将解释如何去移除额外的$watch提高你的应用程序性能。 $watch如果不再使用,我们最好将其释放掉,在angular中我们可以自由的选择在什么时候将$watch从$watch列表中移除。 让我们来看个示例: app = angular.module('app',...

weixin_30483013的博客 70

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

AngularJs 性能优化总结

angular性能优化心得 时间2014-05-13 00:36:33segmentfault-博客原文http://blog.segmentfault.com/atian25/1190000000502981 搬运自:http://atian25.github.io/201...

chenxiayin2741的博客 189

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

AngularJS 性能优化二三事

在过去的两年中,angularjs 的使用率有了很大的提升。简单的双向绑定是促使其流行的主要原因之一,但与此同时,它导致了在一个应用中出现了大量的 watcher。在后台,angularJS 会执行所谓的 “脏值检查”。之所以要做脏值检查目的是为了检查在 “scope” 中的数据是否发生了变化;框架必须周期性的检测数据是否发生了变化… 脏值检查会每 40ms 更新一次.. 想想看.. 如果它需要检

qq_26702065的博客 472

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

angularjs 性能优化 转载

搬运自: http://atian25.github.io/2014/05/09/angular-performace/ 不知不觉,在项目中用angular已经半年多了,踩了很多坑。  趁着放假,把angular的3本书都看了遍,结合这半年的经验,是该做个总结了。  希望可以给大家带来启示,少踩点坑。  本文针对的读者:  - 具备JavaScript性能优化的相关知识( 雅

renhua_ahua的专栏 379

使用AngularJs需要注意的事项

1、不要在controller中有任何的操作Dom的行为,会污染你的controller并留下潜在的隐患。 2、按照特性划分文件。 3、当开发大型应用程序时,可以将同一类特性置于一个模块内,能使重用模块更加容易。 4、将依赖作为一个数据传入。数组最后一个元素是一个函数,依赖项作为它的参数。 5、使用AngularJs将全局依赖封装进模块中。 6、数据也应该存储到服务中,除非它们是已经被绑

czz_kb的专栏 471

AngularJS 性能优化二三事 【已翻译100%】

在过去的两年中,angularjs 的使用率有了很大的提升。简单的双向绑定是促使其流行的主要原因之一,但与此同时,它导致了在一个应用中出现了大量的 watcher。在后台,angularJS 会执行所谓的 “脏值检查”。之所以要做脏值检查目的是为了检查在 “scope” 中的数据是否发生了变化;框架必须周期性的检测数据是否发生了变化… 脏值检查会每 40...

weixin_34279246的博客 83
上一篇: Angularjs中ng-select和ng-options的用法详解
下一篇: angularJs中跳转到指定的锚点详解($anchorScroll)
拼搏的小叔
博客等级 码龄10年 56粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值