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 相关文章推荐
javascript编程起步(第一课)
Jan 10 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
Jul 27 Javascript
AngularJS+Node.js实现在线聊天室
Aug 28 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
May 05 Javascript
微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例
Oct 13 Javascript
js中利用cookie实现记住密码功能
Aug 20 Javascript
vue多级多选菜单组件开发
Sep 08 Javascript
jQuery实现搜索页面关键字的功能
Feb 16 Javascript
微信小程序如何获知用户运行小程序的场景教程
May 17 Javascript
详解使用create-react-app添加css modules、sasss和antd
Jul 31 Javascript
js实现上传图片并显示图片名称
Dec 18 Javascript
vue使用element-ui按需引入
May 20 Vue.js
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
thinkphp控制器调度使用示例
2014/02/24 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
2016/06/13 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
几行代码轻松实现PHP文件打包下载zip
2017/03/01 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
JavaScript 获取事件对象的注意点
2009/07/29 Javascript
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
解决Jquery鼠标经过不停滑动的问题
2014/03/03 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
bootstrapValidator自定验证方法写法
2016/12/01 Javascript
JavaScript中${pageContext.request.contextPath}取值问题及解决方案
2016/12/08 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
vue解决跨域问题(推荐)
2020/11/10 Javascript
jQuery冲突问题解决方法
2021/01/19 jQuery
[02:49]2014DOTA2电竞也是体育项目! 势要把荣誉带回中国!
2014/07/20 DOTA
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
python3.3实现乘法表示例
2014/02/07 Python
利用python微信库itchat实现微信自动回复功能
2017/05/18 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
2019/12/12 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
python函数超时自动退出的实操方法
2020/12/28 Python
处理textarea中的换行和空格
2019/12/12 HTML / CSS
自我鉴定怎么写
2014/01/12 职场文书
国税会议欢迎词
2014/01/16 职场文书
陈欧广告词
2014/03/14 职场文书
授权委托书
2014/07/31 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
学校教学工作总结2015
2015/05/19 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书