关于angularJs指令的Scope(作用域)介绍


Posted in Javascript onOctober 25, 2016

每当一个指令被创建的时候,都会有这样一个选择,是继承自己的父作用域(一般是外部的Controller提供的作用域或者根作用域($rootScope)),还是创建一个新的自己的作用域,当然AngularJS为我们指令的scope参数提供了三种选择,分别是:false,true,{};默认情况下是false。

1.scope = false

JS 代码:

关于angularJs指令的Scope(作用域)介绍

html 代码:

关于angularJs指令的Scope(作用域)介绍

result:

关于angularJs指令的Scope(作用域)介绍

修改文本框的内容,两个名字都会变,实际上修改的是同一个$scope的name属性。

2. scope=true

修改上面的JS代码,将指令中的:scope:false修改为scope:true

然后我们再试着在我们的input输入框中写一些字符串,会发现,指令中的那个name发生了变化,但是指令外的那个name却没有发生变化,这说明了一个问题。

当我们将scope设置为true的时候,我们就新创建了一个作用域,只不过这个作用域是继承了我们的父作用域;我觉得可以这样理解,我们新创建的作用域是一个新的作用域,只不过在初始化的时候,用了父作用域的属性和方法去填充我们这个新的作用域。它和父作用域不是同一个作用域。
当我们将scope设置为false的时候,我们创建的指令和父作用域(其实是同一个作用域)共享同一个model模型,所以在指令中修改模型数据,它会反映到父作用域的模型中。

3. scope={}

当我们将scope设置为{}时,意味着我们创建的一个新的与父作用域隔离的新的作用域,这使我们在不知道外部环境的情况下,就可以正常工作,不依赖外部环境。

JS代码:

关于angularJs指令的Scope(作用域)介绍

html代码:

关于angularJs指令的Scope(作用域)介绍

result:

关于angularJs指令的Scope(作用域)介绍

修改文本框内容只有指令中的名字会被修改.

scope: {@=&}

@
这是一个单项绑定的前缀标识符
使用方法:在元素中使用属性,好比这样<div my-directive my-name="{{name}}"></div>,注意,属性的名字要用-将两个单词连接,因为是数据的单项绑定所以要通过使用{{}}来绑定数据。

=
这是一个双向数据绑定前缀标识符
使用方法:在元素中使用属性,好比这样<div my-directive age="age"></div>,注意,数据的双向绑定要通过=前缀标识符实现,所以不可以使用{{}}。

&
这是一个绑定函数方法的前缀标识符
使用方法:在元素中使用属性,好比这样<div my-directive change-my-age="changeAge()"></div>,注意,属性的名字要用-将多个个单词连接。

以上就是小编为大家带来的关于angularJs指令的Scope(作用域)介绍全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
apycom出品的jQuery精美菜单破解方法
Feb 18 Javascript
replace()方法查找字符使用示例
Oct 28 Javascript
按Enter键触发事件的jquery方法实现代码
Feb 17 Javascript
JavaScript极简入门教程(三):数组
Oct 25 Javascript
innerHTML在IE中报错解决方案
Dec 15 Javascript
jQuery EasyUI提交表单验证
Jul 19 Javascript
JS从数组中随机取出几个数组元素的方法
Aug 02 Javascript
解决vue处理axios post请求传参的问题
Mar 05 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
Apr 30 Javascript
详解用async/await来处理异步
Aug 28 Javascript
laravel实现中文和英语互相切换的例子
Sep 30 Javascript
微信小程序页面渲染实现方法
Nov 06 Javascript
javascript 中的事件委托详解
Oct 25 #Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
Oct 25 #Javascript
分分钟玩转Vue.js组件
Oct 25 #Javascript
谈谈target=_new和_blank的不同之处
Oct 25 #Javascript
js实现上传图片预览方法
Oct 25 #Javascript
微信小程序(应用号)开发新闻客户端实例
Oct 24 #Javascript
微信小程序 倒计时组件实现代码
Oct 24 #Javascript
You might like
成本8450万,票房仅2亿,口碑两极分化,又一部DC电影扑街了
2020/04/09 欧美动漫
逐步提升php框架的性能
2008/01/10 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
Fleaphp常见函数功能与用法示例
2016/11/15 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
javascript实现的在当前窗口中漂浮框的代码
2010/03/15 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
2014/09/13 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
react-native-tab-navigator组件的基本使用示例代码
2017/09/07 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
2019/12/04 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
微信小程序实现锚点跳转
2020/11/23 Javascript
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
[46:40]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
在Python的一段程序中如何使用多次事件循环详解
2017/09/07 Python
Python实现字符串格式化输出的方法详解
2017/09/20 Python
Python基于identicon库创建类似Github上用的头像功能
2017/09/25 Python
python实现微信发送邮件关闭电脑功能
2018/02/22 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
python print输出延时,让其立刻输出的方法
2019/01/07 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
汽车驾驶求职信
2013/10/25 职场文书
演讲比赛主持词
2015/06/29 职场文书
Nginx的基本概念和原理
2022/03/21 Servers