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 字符串连接的性能问题(多浏览器)
Nov 18 Javascript
用Javascript获取页面元素的具体位置
Dec 09 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
Aug 15 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
Aug 28 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
Aug 03 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
Jan 20 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
Aug 28 Javascript
webpack实现一个行内样式px转vw的loader示例
Sep 13 Javascript
vue自定义全局共用函数详解
Sep 18 Javascript
vue同个按钮控制展开和折叠同个事件操作
Jul 29 Javascript
如何利用javascript接收json信息并进行处理
Aug 06 Javascript
js实现限定区域范围拖拉拽效果
Nov 20 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阻止页面后退的方法分享
2014/02/17 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
2款PHP无限级分类实例代码
2015/11/11 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
PHP程序守护进程化实现方法详解
2020/07/16 PHP
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
jquery使用ColorBox弹出图片组浏览层实例演示
2013/03/14 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
在Python中的Django框架中进行字符串翻译
2015/07/27 Python
利用Python学习RabbitMQ消息队列
2015/11/30 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
2017/08/08 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
Python标准库笔记struct模块的使用
2018/02/22 Python
关于python多重赋值的小问题
2019/04/17 Python
python getpass实现密文实例详解
2019/09/24 Python
Django与pyecharts结合的实例代码
2020/05/13 Python
白俄罗斯大卖场:21vek.by
2019/07/25 全球购物
高级3D打印市场:Gambody
2019/12/26 全球购物
工业设计专业推荐信
2013/10/29 职场文书
学年自我鉴定
2014/01/16 职场文书
公司授权委托书范本
2014/04/03 职场文书
保证书格式范文
2014/04/28 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
授权委托书格式范文
2014/08/02 职场文书
含预算的公司户外活动方案
2014/08/16 职场文书
美德少年事迹材料500字
2014/08/19 职场文书
普通党员对照检查材料
2014/09/24 职场文书
爱国主义主题班会
2015/08/14 职场文书
golang 语言中错误处理机制
2021/08/30 Golang
Mysql排序的特性详情
2021/11/01 MySQL
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技