关于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 相关文章推荐
jQuery 性能优化指南(2)
May 21 Javascript
JSON辅助格式化处理方法
Mar 26 Javascript
jQuery通过deferred对象管理ajax异步
May 20 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
Sep 23 Javascript
那些精彩的JavaScript代码片段
Jan 12 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
Mar 28 jQuery
jQuery 添加样式属性的优先级别方法(推荐)
Jun 08 jQuery
基于Bootstrap的标签页组件及bootstrap-tab使用说明
Jul 25 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
Sep 19 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
Dec 27 Javascript
javascript实现弹幕墙效果
Nov 28 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
Mar 07 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
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
php 删除一个数组中的某个值.兼容多维数组!
2012/02/18 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
2016/08/29 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
javascript 三种方法实现获得和设置以及移除元素属性
2013/03/20 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
2016/11/02 Javascript
正则验证小数点后面只能有两位数的方法
2017/02/28 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
2017/05/22 Javascript
BootStrap Fileinput上传插件使用实例代码
2017/07/28 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
vue 项目build错误异常的解决方法
2019/04/22 Javascript
微信小程序身份证验证方法实现详解
2019/06/28 Javascript
vue实现五子棋游戏
2020/05/28 Javascript
Python判断字符串是否为字母或者数字(浮点数)的多种方法
2018/08/03 Python
python八皇后问题的解决方法
2018/09/27 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
python实现知乎高颜值图片爬取
2019/08/12 Python
python numpy库np.percentile用法说明
2020/06/08 Python
详解Flask前后端分离项目案例
2020/07/24 Python
如何使用amaze ui的分页样式封装一个通用的JS分页控件
2020/08/21 HTML / CSS
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
美国高端牛仔品牌:Silver Jeans
2019/12/12 全球购物
Elizabeth Gage官网:英国最好的珠宝设计之一
2020/09/26 全球购物
销售类求职信
2014/06/13 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
教师节寄语2015
2015/03/23 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
七一活动主持词
2015/06/29 职场文书
在Django中使用MQTT的方法
2021/05/10 Python
python使用torch随机初始化参数
2022/03/22 Python