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架构之Dojo篇
Apr 10 Javascript
可插入图片的TEXT文本框
Dec 27 Javascript
jQuery实现div横向拖拽排序的简单实例
Jul 13 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
Feb 13 Javascript
Angular4实现动态添加删除表单输入框功能
Aug 11 Javascript
vue 简单自动补全的输入框的示例
Mar 12 Javascript
vue非父子组件通信问题及解决方法
Jun 11 Javascript
4个顶级JavaScript高级文本编辑器
Oct 10 Javascript
详解JavaScript中关于this指向的4种情况
Apr 18 Javascript
使用vuex解决刷新页面state数据消失的问题记录
May 08 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
May 13 Javascript
通过实例解析JavaScript for in及for of区别
Jun 15 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给图片添加文字水印方法汇总
2015/08/27 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
2018/04/27 PHP
推荐一些非常不错的javascript学习资源站点
2007/08/29 Javascript
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
js 蒙版进度条(结合图片)
2010/03/10 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
2013/12/16 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
2014/08/15 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
JavaScript统计字符串中每个字符出现次数完整实例
2016/01/28 Javascript
使用postMesssage()实现iframe跨域页面间的信息传递
2016/03/29 Javascript
jquery基本选择器匹配多个元素的实现方法
2016/09/05 Javascript
jquery实现提示语淡入效果
2017/05/05 jQuery
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
2018/09/18 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
jQuery实时统计输入框字数及限制
2020/06/24 jQuery
vue中路由跳转不计入history的操作
2020/09/21 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
2020/10/30 Javascript
Python实现list反转实例汇总
2014/11/11 Python
对pyqt5多线程正确的开启姿势详解
2019/06/14 Python
使用遗传算法求二元函数的最小值
2020/02/11 Python
Amara美国站:英国高端家居礼品网站,世界各地的奢侈家具品牌
2017/07/26 全球购物
德国50岁以上交友网站:Lebensfreunde
2020/03/18 全球购物
如何在C# winform中异步调用web services
2015/09/21 面试题
高中毕业自我鉴定
2013/12/16 职场文书
大学本科毕业生求职信范文
2013/12/18 职场文书
预备党员入党思想汇报
2014/01/04 职场文书
经贸韩语专业大学生职业规划
2014/02/14 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
甘南现象心得体会
2014/09/11 职场文书
旷工检讨书1000字
2015/01/01 职场文书
本溪关门山导游词
2015/02/09 职场文书
同学聚会开幕词
2019/04/02 职场文书
Springboot集成阿里云OSS上传文件系统教程
2021/06/28 Java/Android
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python
Python数据结构之队列详解
2022/03/21 Python