AngularJS中scope的绑定策略实例分析


Posted in Javascript onOctober 30, 2017

本文实例讲述了AngularJS中scope的绑定策略。分享给大家供大家参考,具体如下:

当scope选项写为scope:{ }这种形式的时候,就已经为指令生成了隔离作用域,指令的模板就无法访问外部作用域了:

具有隔离作用域的指令最主要的使用场景是创建可复用的组件,组件可以在未知上下文中使用,并且可以避免污染所处的外部作用域或不经意地污染内部作用域。

现在,我们来看看绑定策略的三种形式: @、= 、&

1. @

本地作用域属性:使用@符号将本地作用域同DOM属性的值进行绑定。指令内部作用域可以使用外部作用域的变量:

@ (or @attr)

把当前的属性作为字符串传递。你还可以绑定来自外层的scope的值,在属性值中插入{{ }}即可。什么意思呢?说的简单一点就是假设你在模板中有个双花括号表达式,然后我们把表达式里的内容和html中指令里特定名字的属性绑定起来:

<div ng-controller="nameController">
  <direct for-name="{{ Name }}"></direct>
<div>
directive("direct",function(){
    return{
      restrict: 'A',
      template: '<div>指令中:{{ name }}</div>',
      scope:{
       name:'@forName'
      }
     }
 })
.controller("nameController",function($scope){
   $scope.Name="张三";
});

2. =

与父scope中的属性进行双向绑定

@是针对字符串(准确来说是表达式expression)而用,但=是针对某个对象的引用;

<div ng-controller="nameController">
  <direct case="data[0]"></direct>
  <direct case="data[1]"></direct>
<div>
directive("direct",function(){
    return{
      restrict: 'ECMA',
      template: '<div>指令中:{{ case.name }}</div>',
      scope:{
       case:'='
      }
     }
 })
.controller("nameController",function($scope){
   $scope.data=[{name:"张三"},{name:"李四"}];
});

data是一个对象数组,里面包含了两个对象,所以,我们分别把两个对象传递给了case这个属性,case属性就把这个对象的引用传递给了模板中我们写的{{ case.name }}中的case;而如果你在=后边加上了自己定义的名字,那只要把html里case属性换成那个名字就可以了。

3. &

传递来自父scope中的函数、稍后调用

它的含义是:对父级作用域进行绑定,并将其中的属性包装成一个函数,注意任何类型的属性都会被包装成一个函数,比如一个单纯的字符串,或是一个对象数组,或是一个函数方法。

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
node.js中的定时器nextTick()和setImmediate()区别分析
Nov 26 Javascript
JavaScript使用Prototype实现面向对象的方法
Apr 14 Javascript
Spring mvc 接收json对象
Dec 10 Javascript
基于JavaScript代码实现自动生成表格
Jun 15 Javascript
js传值后台中文出现乱码的解决方法
Jun 30 Javascript
vue中实现滚动加载更多的示例
Nov 08 Javascript
CentOS环境中MySQL修改root密码方法
Jan 07 Javascript
vue中的provide/inject的学习使用
May 09 Javascript
angularjs请求数据的方法示例
Aug 06 Javascript
JavaScript提升机制Hoisting详解
Oct 23 Javascript
jQuery实现可编辑的表格
Dec 11 jQuery
在vue中嵌入外部网站的实现
Nov 13 Javascript
JavaScript数组push方法使用注意事项
Oct 30 #Javascript
JavaScript Date对象应用实例分享
Oct 30 #Javascript
AngularJS实现controller控制器间共享数据的方法示例
Oct 30 #Javascript
Angularjs按需查询实例代码
Oct 30 #Javascript
Vue中正确使用jQuery的方法
Oct 30 #jQuery
ES6 javascript中Class类继承用法实例详解
Oct 30 #Javascript
轻松理解vue的双向数据绑定问题
Oct 30 #Javascript
You might like
source.php查看源文件
2006/12/09 PHP
PHP中文件上传的一个问题
2010/09/04 PHP
php模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
PHP的Socket通信之UDP通信实例
2015/07/02 PHP
网页里控制图片大小的相关代码
2006/06/25 Javascript
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
js 禁止选择功能实现代码(兼容IE/Firefox)
2010/04/23 Javascript
JQuery live函数
2010/12/24 Javascript
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
Express.JS使用详解
2014/07/17 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
超赞的动手创建JavaScript框架的详细教程
2015/06/30 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
详解JavaScript对象的深浅复制
2017/03/30 Javascript
解决layui调用自定义方法提示未定义的问题
2019/09/14 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
[51:05]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第一局
2016/03/06 DOTA
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python中函数的多种格式和使用实例及小技巧
2015/04/13 Python
Python每天必学之bytes字节
2016/01/28 Python
Python按行读取文件的简单实现方法
2016/06/22 Python
python输出pdf文档的实例
2020/02/13 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
2020/03/23 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
美国背景检查、公共记录和人物搜索网站:BeenVerified
2018/02/25 全球购物
小学开学寄语
2014/01/19 职场文书
工作表现评语
2014/01/19 职场文书
党员群众路线承诺书
2014/05/20 职场文书
高中课程设置方案
2014/05/28 职场文书
离婚协议书该怎么写
2014/10/04 职场文书
uwsgi+nginx代理Django无法访问静态资源的解决
2021/05/10 Servers
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python