博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈AngularJS--域变量(scope)
阅读量:6825 次
发布时间:2019-06-26

本文共 1039 字,大约阅读时间需要 3 分钟。

hot3.png

1、引述

作为一个现代Javescript的流行框架,AngularJS已经被很多人使用。对于刚入门的或者一部分放弃使用这个框架的人,我感觉会在scope这个概念上遇到了不小的困难。

就我自身亲身经历而言,scope着实让我在项目使用中,费了很大劲。这很大程度上是由于概念本身的多样化和使用的面太广造成的。

2、言归正传

什么是scope?

简单来讲,scope是AngularJS中的作用域对象,是我们使用AngularJS时,常打交道的一个内置对象。scope是一个局部变量,在不同作用域中,有着不同的值。

在哪会出现scope变量?

存在作用域的地方就会创建一个scope变量,最让人挠头的地方到了,AngularJS中什么情况下会单独划分作用域?我们开始使用时可能会以为只有controller会划分单独的作用域,原因很简单,我们一般创建一个controller后,在下面的子节点使用时,可以直接使用其上的变量,但是这其实是AngularJS的scope继承的结果。

其实除了controller,某些directive也会创建scope,这个scope可以选择性的继承父scope的某些属性,或者作为一个 isolated scope。而且修改原型继承来的父scope属性时需要注意,直接修改基本类型(数字、字符串、bool等),父scope不会发生变化,因为基本类型在原型继承中是值传递的(而非传引用)。

另外

多个scope间的值传递,非常不建议用诸如$parent,$sibling等方式直接访问、取值、修改,推荐采用service做跨scope传值,一来保证代码的结构清晰,二来也是方便复用。 除此之外,每个scope中还会包含一些AngularJS 底层函数,例如我们较为常用的 $apply,$watch等。这些方法的使用请自行google。

结语

scope是AngularJS中的核心概念,值得每位希望深入学习AngularJS的同学研究。 另外一个AngularJS中的核心知识,我认为是它的双向数据绑定机制,我们所看到的仅仅是表象,有想学习的同学建议看看AngularJS 源代码,关于$apply,$digest 以及 指令集ng-model的实现,会对深入了解这部分很有帮助。(另外强赞一下AngularJS的源代码注释,看后觉得自己的注释弱爆了)

转载于:https://my.oschina.net/jellypie/blog/486331

你可能感兴趣的文章
引水数据--紧凑
查看>>
yum安装ftp服务器
查看>>
滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(8月22日~8月28日)...
查看>>
PHP中一些有用的函数
查看>>
[Logstash]使用详解
查看>>
Android USER 版本与ENG 版本的差异
查看>>
命令行设置IE代理
查看>>
面试中二叉树总结
查看>>
翻译器DIY————次序
查看>>
easyui form 提交问题,纠结了很久,有点诡异
查看>>
Swift - 图像控件(UIImageView)的用法
查看>>
Cloneable接口和Object的clone()方法
查看>>
[saiku] 连接 mondrain 数据源出错-空指针错误
查看>>
【转发】未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。...
查看>>
ORACLE和SQL SERVER的数据同步常用方法
查看>>
easyui 入门
查看>>
KMP算法之从next[]到nextVal[] (转)
查看>>
JAVA操作properties文件
查看>>
GoldenGate中使用FILTER,COMPUTE 和SQLEXEC命令
查看>>
自执行函数的一些总结
查看>>