关于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 Dialog的内存泄露问题解决方法
Jun 18 Javascript
jquery关于图形报表的运用实现代码
Jan 06 Javascript
Jquery颜色选择器ColorPicker实现代码
Nov 14 Javascript
js调试系列 控制台命令行API使用方法
Jun 18 Javascript
jQuery+ajax实现无刷新级联菜单示例
May 21 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
Jan 25 Javascript
angular框架实现全选与单选chekbox的自定义
Jul 06 Javascript
vue2组件之select2调用的示例代码
Oct 12 Javascript
JS中精巧的自动柯里化实现方法
Dec 12 Javascript
在vue中使用echars实现上浮与下钻效果
Nov 08 Javascript
webpack打包优化的几个方法总结
Feb 10 Javascript
js将URL网址转为16进制加密与解密函数
Mar 04 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使用pdo连接mssql server数据库实例
2014/12/25 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
js解析json读取List中的实体对象示例
2014/03/11 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
解决WordPress使用CDN后博文无法评论的错误
2015/12/15 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
Jquery ajax书写方法代码实例解析
2020/06/12 jQuery
Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
2014/06/10 Python
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
详解Python中用于计算指数的exp()方法
2015/05/14 Python
SQLite3中文编码 Python的实现
2017/01/11 Python
用Python实现读写锁的示例代码
2018/11/05 Python
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
Python可迭代对象操作示例
2019/05/07 Python
Python中的引用知识点总结
2019/05/20 Python
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
2020/05/07 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
解决img标签上下出现间隙的方法
2016/12/14 HTML / CSS
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
学雷锋月活动总结
2014/04/25 职场文书
参赛口号
2014/06/16 职场文书
法人代表证明书
2014/09/18 职场文书
教师个人年度总结
2015/02/11 职场文书
留学推荐信怎么写
2015/03/26 职场文书
浅谈Python数学建模之数据导入
2021/06/23 Python