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 css在IE和Firefox中区别分析
Feb 18 Javascript
js简单实现让文本框内容逐个字的显示出来
Oct 22 Javascript
JS实现跟随鼠标闪烁转动色块的方法
Feb 26 Javascript
JavaScript中使用Callback控制流程介绍
Mar 16 Javascript
深入理解JavaScript编程中的原型概念
Jun 25 Javascript
微信小程序 登陆流程详细介绍
Jan 17 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
Jun 08 Javascript
如何理解Vue的.sync修饰符的使用
Aug 17 Javascript
Js中async/await的执行顺序详解
Sep 22 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
Oct 20 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
Feb 14 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
Mar 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
php cout&amp;lt;&amp;lt;的一点看法
2010/01/24 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
2013/08/07 PHP
PHP中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
Laravel使用支付宝进行支付的示例代码
2017/08/16 PHP
JavaScript 封装Ajax传递的数据代码
2009/06/05 Javascript
js 文件引入实现代码
2010/04/23 Javascript
google 搜索框添加关键字实现代码
2010/04/24 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
JavaScript知识点总结(十)之this关键字
2016/05/31 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
python用pickle模块实现“增删改查”的简易功能
2017/06/07 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
Python 关于反射和类的特殊成员方法
2017/09/14 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
python实现Virginia无密钥解密
2019/03/20 Python
实例详解Python装饰器与闭包
2019/07/29 Python
Python中的延迟绑定原理详解
2019/10/11 Python
Python字典中的值为列表或字典的构造实例
2019/12/16 Python
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
汇智创新科技发展有限公司
2015/12/06 面试题
Java中各种基本数据类型的默认值都是什么
2016/12/22 面试题
销售主管岗位职责
2014/02/08 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
房屋委托书范本
2014/04/04 职场文书
2014年综治宣传月活动总结
2014/04/28 职场文书
工作检讨书大全
2015/01/26 职场文书
大学生求职意向书
2015/05/11 职场文书
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS
SpringCloud之@FeignClient()注解的使用方式
2021/09/25 Java/Android