关于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 ajax BUG:object doesn't support this property or method
Jul 06 Javascript
JavaScript中的View-Model使用介绍
Aug 11 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
Jun 04 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
Apr 06 Javascript
jQuery图片轮播插件——前端开发必看
May 31 Javascript
遍历json获得数据的几种方法小结
Jan 21 Javascript
vue template中slot-scope/scope的使用方法
Sep 06 Javascript
总结4个方面优化Vue项目
Feb 11 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
Jun 04 jQuery
微信小程序实现原生步骤条
Jul 25 Javascript
VUE中使用HTTP库Axios方法详解
Feb 05 Javascript
详解JavaScript 中的批处理和缓存
Nov 19 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面向对象——访问修饰符介绍
2012/11/08 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
2014/05/10 PHP
php实现的Captcha验证码类实例
2014/09/22 PHP
Cygwin中安装PHP方法步骤
2015/07/04 PHP
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
PHP/HTML混写的四种方式总结
2017/02/27 PHP
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
2013/06/02 Javascript
javascript实现颜色渐变的方法
2013/10/30 Javascript
javascript对象的使用和属性操作示例详解
2014/03/02 Javascript
常用jQuery代码分享
2015/07/14 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
vue实现微信分享功能
2018/11/28 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
python 集合 并集、交集 Series list set 转换的实例
2018/05/29 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
详解Python连接MySQL数据库的多种方式
2019/04/16 Python
python3发送邮件需要经过代理服务器的示例代码
2019/07/25 Python
Python函数的默认参数设计示例详解
2019/12/01 Python
浅谈CSS3中的变形功能-transform功能
2017/12/27 HTML / CSS
Oakley西班牙官方商店:太阳眼镜和男女运动服
2019/04/26 全球购物
电子技术专业中专生的自我评价
2013/12/17 职场文书
大学校运会广播稿
2014/02/03 职场文书
反腐倡廉影片观后感
2015/06/08 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js
深入浅析React中diff算法
2021/05/19 Javascript
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL
SQL中的三种去重方法小结
2021/11/01 SQL Server
python脚本框架webpy模板控制结构
2021/11/20 Python
Java死锁的排查
2022/05/11 Java/Android