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 相关文章推荐
不使用ajax实现无刷新提交表单
Dec 21 Javascript
使用js画图之圆、弧、扇形
Jan 12 Javascript
JS实现单击输入框弹出选择框效果完整实例
Dec 14 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
Jun 12 Javascript
第一次接触神奇的Bootstrap基础排版
Jul 26 Javascript
vue模板语法-插值详解
Mar 06 Javascript
vue.js学习之vue-cli定制脚手架详解
Jul 02 Javascript
微信小程序动态生成二维码的实现代码
Jul 25 Javascript
JS实现数组深拷贝的方法分析
Mar 06 Javascript
150行代码带你实现微信小程序中的数据侦听
May 17 Javascript
微信小程序开发中var that =this的用法详解
Jan 18 Javascript
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
Feb 04 jQuery
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函数式编程简单示例
2019/08/08 PHP
javascript 读取图片文件的大小
2009/06/25 Javascript
编写Js代码要注意的几条规则
2010/09/10 Javascript
JavaScript小技巧 2.5 则
2010/09/12 Javascript
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
javascript实现颜色渐变的方法
2013/10/30 Javascript
bootstrap改变按钮加载状态
2014/12/01 Javascript
node.js回调函数之阻塞调用与非阻塞调用
2015/11/13 Javascript
完美的js div拖拽实例代码
2016/09/24 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
Nuxt.js实战详解
2018/01/18 Javascript
使用vue cli4.x搭建vue项目的过程详解
2020/05/08 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
python操作日期和时间的方法
2014/03/11 Python
详解python之简单主机批量管理工具
2017/01/27 Python
Python中用post、get方式提交数据的方法示例
2017/09/22 Python
python2.7到3.x迁移指南
2018/02/01 Python
python 简单照相机调用系统摄像头实现方法 pygame
2018/08/03 Python
python实现感知器算法(批处理)
2019/01/18 Python
Python Selenium 设置元素等待的三种方式
2020/03/18 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
英国健康和美容技术产品购物网站:CurrentBody
2019/07/17 全球购物
一套C++笔试题面试题
2012/06/06 面试题
如果重写了对象的equals()方法,需要考虑什么
2014/11/02 面试题
软件工程专业推荐信
2013/10/28 职场文书
总经理岗位职责
2013/11/09 职场文书
百度吧主申请感言
2014/01/12 职场文书
毕业生求职信的经典写法
2014/01/31 职场文书
团代会宣传工作方案
2014/05/08 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
西游记读书笔记
2015/06/25 职场文书
婚庆公司开业主持词
2015/06/30 职场文书
创业的9条正确思考方式
2019/08/26 职场文书
创业计划书之烤红薯
2019/09/26 职场文书
2019年圣诞节祝福语集锦
2019/12/25 职场文书