关于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 相关文章推荐
关于实现代码语法标亮 dp.SyntaxHighlighter
Feb 02 Javascript
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
Jan 10 Javascript
javascript学习笔记(五)原型和原型链详解
Oct 08 Javascript
Jquery注册事件实现方法
May 18 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
May 18 Javascript
bootstrap监听滚动实现头部跟随滚动
Nov 08 Javascript
非常优秀的JS图片轮播插件Swiper的用法
Jan 03 Javascript
canvas绘制表盘时钟
Jan 23 Javascript
vue父组件点击触发子组件事件的实例讲解
Feb 08 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
Nov 12 jQuery
vue插槽slot的理解和使用方法
Apr 03 Javascript
JS手写一个自定义Promise操作示例
Mar 16 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
PHP中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
如何判断php mysqli扩展类是否开启
2016/12/24 PHP
IE DOM实现存在的部分问题及解决方法
2009/07/25 Javascript
javascript OFFICE控件测试代码
2009/12/08 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
jQuery右下角旋转环状菜单特效代码
2015/08/10 Javascript
AngularJS实现分页显示数据库信息
2016/07/01 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
bootstrap组件之按钮式下拉菜单小结
2017/01/19 Javascript
vue-cli3全面配置详解
2018/11/14 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
JavaScript之Blob对象类型的具体使用方法
2019/11/29 Javascript
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
Python的Tornado框架实现异步非阻塞访问数据库的示例
2016/06/30 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
使用html2canvas实现浏览器截图的示例代码
2018/01/26 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
德国家用电器购物网站:Premiumshop24
2019/08/22 全球购物
校园报刊亭的创业计划书
2014/01/02 职场文书
函授本科自我鉴定
2014/02/04 职场文书
《灯光》教学反思
2014/02/08 职场文书
市场部经理岗位职责
2014/04/10 职场文书
班组拓展活动方案
2014/08/14 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
房屋产权证明书
2015/06/19 职场文书
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python
Spring Security中用JWT退出登录时遇到的坑
2021/10/16 Java/Android
python中的3种定义类方法
2021/11/27 Python
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python
各种货币符号快捷输入
2022/02/17 杂记
Mysql使用全文索引(FullText index)的实例代码
2022/04/03 MySQL