当directive中的scope设置为一个对象的时候,该指令就有了一个独立的作用域,AngularJS提供了一种绑定策略用于隔离作用域和外部作用域进行通信。

1、@(or @attr)

使用@符号可以进行单项的数据绑定,取值总是一个字符串,所以要用{{}}。

另外这也是一个单向的绑定,外部数据改变会反应到内部,但是内部数据变数据变化,外部不会变。

属性要用-连接,scope中写它的驼峰格式。

如果没有通过@attr指定属性名称,那么本地名称要与DOM属性的名称一致。

<!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta charset="utf-8">
<title>AngularJS</title>
</head>
<body>
<div ng-controller="parent">
<div>
<input type="text" ng-model="name"/>
</div>
<my-name show-name="{{name}}"> </my-name>
</div>
</body>
<script type="text/javascript" src="angular.min.js"></script>
<script type="text/javascript">
var app = angular.module("myApp", []);
app.controller("parent", function($scope){
$scope.name = "Jhon";
}).directive("myName", function(){
return {
restrict:"EA",
scope:{
showName: '@'
// name: '@showName'
},
template:'<input type="text" ng-model="showName"/>',
// template:'<input type="text" ng-model="name"/>',
}
});
</script>
</html>

2、= (or =attr)

使用=进行双向数据绑定,任何一方的值改变都会反应到另一方。因为是双向绑定,所以不要使用{{}},不然以下demo会报错。

属性要用-连接,scope中写它的驼峰格式。

如果没有通过@attr指定属性名称,那么本地名称要与DOM属性的名称一致。

<!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta charset="utf-8">
<title>AngularJS</title>
</head>
<body>
<div ng-controller="parent">
<div>
<input type="text" ng-model="name"/>
</div>
<my-name show-name="name"> </my-name>
</div>
</body>
<script type="text/javascript" src="angular.min.js"></script>
<script type="text/javascript">
var app = angular.module("myApp", []);
app.controller("parent", function($scope){
$scope.name = "Jhon";
}).directive("myName", function(){
return {
restrict:"EA",
scope:{
showName: '='
},
template:'<input type="text" ng-model="showName"/>'
}
});
</script>
</html>

3、&(or &attr)

&用来绑定外部的函数。

属性要用-连接,scope中写它的驼峰格式。

如果没有通过@attr指定属性名称,那么本地名称要与DOM属性的名称一致。

<!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta charset="utf-8">
<title>AngularJS</title>
</head>
<body>
<div ng-controller="parent">
<div>
<input type="text" ng-model="count"/>
</div>
<my-name show-name="increment()"> </my-name>
</div>
</body>
<script type="text/javascript" src="angular.min.js"></script>
<script type="text/javascript">
var app = angular.module("myApp", []);
app.controller("parent", function($scope){
$scope.count = 0;
$scope.increment = function(){
$scope.count++;
};
}).directive("myName", function(){
return {
restrict:"EA",
scope:{
showName: '&'
},
template:'<input type="button" ng-click="showName()" value="+1"/>'
}
});
</script>
</html>

最新文章

  1. Hadoop.2.x_常用端口及定义方法(转)
  2. SQL语言基础
  3. VMware Tools安装
  4. 使用Tesseract OCR识别验证码
  5. utf8乱码解决方案[适合tomcat部署的jsp应用]
  6. Qt plugin系统的几点说明
  7. EL表达式,保留小数点后两位
  8. 让你的Dapper像EF一样调用 开源~!
  9. 安装Mercurial进行版本管理
  10. spring初学总结思路
  11. Windows rundll32的用法-批处理管理打印机
  12. [转帖]如何重置CentOS/RHEL 7中遗忘的根用户帐户密码
  13. layui---form表单模块
  14. django 中的 ajax
  15. 工作随笔——elasticsearch数据冷热分离、数据冷备
  16. mysql for update语句
  17. 在ubuntu中配置深度学习python图片分类实验环境
  18. 腾讯云CMQ消息队列在Windows环境下的使用
  19. 動態修改 XML 欄位
  20. 【数据库】百万级数据库SQL优化大总结

热门文章

  1. 源码安装H2O Http 服务端程序到Ubuntu服务器
  2. Axios源码阅读笔记#1 默认配置项
  3. Writing Science 笔记 6.19
  4. Linux入门之常用命令(9)进程及端口查看
  5. Vue路由vue-router
  6. 【POJ】 1061 青蛙的约会(扩欧)
  7. vscode 调试.net core 2.0 输出乱码解决方法
  8. 深入理解C# 静态类与非静态类、静态成员的区别 [转载]
  9. Template7插入动态模板
  10. JS全选与不选、反选