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 相关文章推荐
jQuery中prevAll()方法用法实例
Jan 08 Javascript
jQuery实现预加载图片的方法
Mar 17 Javascript
jQuery基于ajax实现星星评论代码
Aug 07 Javascript
JS 动态判断PC和手机浏览器实现代码
Sep 21 Javascript
详解vue表单验证组件 v-verify-plugin
Apr 19 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
Jul 18 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
Apr 24 Javascript
SVG实现时钟效果
Jul 17 Javascript
如何手动实现es5中的bind方法详解
Dec 07 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
May 21 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
Nov 02 Javascript
用JS实现飞机大战小游戏
Jun 09 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
玩转图像函数库―常见图形操作
2006/09/03 PHP
写一个用户在线显示的程序
2006/10/09 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
2014/06/19 PHP
php页面函数设置超时限制的方法
2014/12/01 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
PHP多维数组遍历方法(2种实现方法)
2015/12/10 PHP
100多行PHP代码实现socks5代理服务器[2]
2016/05/05 PHP
Cookie 小记
2010/04/01 Javascript
JavaScript isArray()函数判断对象类型的种种方法
2010/10/11 Javascript
jquery实现的带缩略图的焦点图片切换(自动播放/响应鼠标动作)
2013/01/23 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
2013/06/06 Javascript
js判断屏幕分辨率的代码
2013/07/16 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
jquery Validation表单验证使用详解
2020/09/12 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
node.js制作一个简单的登录拦截器
2020/02/10 Javascript
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
Python中下划线的使用方法
2015/03/27 Python
python类的继承实例详解
2017/03/30 Python
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
Python中psutil的介绍与用法
2019/05/02 Python
Python微信操控itchat的方法
2019/05/31 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
去除python中的字符串空格的简单方法
2020/12/22 Python
深入解析HTML5的IndexedDB索引数据库
2015/09/14 HTML / CSS
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
《爱如茉莉》教后反思
2014/04/12 职场文书
敬老院活动感想
2015/08/07 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
MySQL下使用Inplace和Online方式创建索引的教程
2021/05/26 MySQL