深入理解Angularjs向指令传递数据双向绑定机制


Posted in Javascript onDecember 31, 2016

下面来先看一个简单例子

<!DOCTYPE html>
<html lang="zh-CN" ng-app="app">
<head>
  <meta charset="utf-8">
  <title></title>
  <link rel="stylesheet" href="../bootstrap.min.js">
</head>
<body>
  <label>硬编码的input</label>
  <input type="text" ng-model="Url">
  <div my-directive some-attr="Url"></div>

  <script src="../angular.min.js"></script>
  <script>
    angular.module('app', [])
    .directive('myDirective', function() {
      return {
        restrict: 'A', 
        replace: true,
        scope: { 
          myUrl: '=someAttr', // 等号用做 双向绑定 这里不做详细介绍
        }, 
        template: '<div>'+
              '<label>指令中的input</label>'+
              '<input type="text" ng-model="myUrl">'+
              '<a href="{{ myUrl }}">点我试试</a>'+
             '</div>'
        
      }
    })
  </script>
</body>
</html>

这个例子我用通俗的话来过一遍

1.使用隔离作用域 让DOM中的 ng-model="Url" ,这里暂且叫他'A' 与 指令中的 some-attr="Url" --> 'B' 形成双向绑定关系

scope: { 
  myUrl: '=someAttr',
},

经过上面的步骤,B与 隔离作用域中的model myUrl 就指向了同一个地方

2.使隔离作用域中的model myUrl -->'B' 与指令模板中的 ng-model="myUrl" -->'C' 形成双向绑定关系

template: '<div>'+
       '<label>指令中的input</label>'+
       '<input type="text" ng-model="myUrl">'+
       '<a href="{{ myUrl }}">点我试试</a>'+
     '</div>'

这个时候 A B C 就同时指向了 一个地址 所有的事情也就顺理成章了

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
JQuery 初体验(建议学习jquery)
Apr 25 Javascript
jQuery简单实现两级下拉菜单效果代码
Sep 15 Javascript
深入理解JQuery中的事件与动画
May 18 Javascript
javascript 网页进度条简单实例
Feb 22 Javascript
Vue自定义图片懒加载指令v-lazyload详解
Dec 31 Javascript
手把手教你vue-cli单页到多页应用的方法
May 31 Javascript
vuejs选中当前样式active的实例
Aug 22 Javascript
vue表单自定义校验规则介绍
Aug 28 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
Nov 01 Javascript
JQuery表单元素取值赋值方法总结
May 12 jQuery
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 Vue.js
AudioContext 实现音频可视化(web技术分享)
Feb 24 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
Dec 31 #Javascript
Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法
Dec 31 #Javascript
angularjs中ng-attr的用法详解
Dec 31 #Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
Dec 31 #Javascript
Angular JS数据的双向绑定详解及实例
Dec 31 #Javascript
Javascript 实现全屏滚动实例代码
Dec 31 #Javascript
Node.js中如何合并两个复杂对象详解
Dec 31 #Javascript
You might like
php magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
php自定义apk安装包实例
2014/10/20 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
jQuery中$.each使用详解
2015/01/29 Javascript
批量下载对路网图片并生成html的实现方法
2016/06/07 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
利用jQuery解析获取JSON数据
2017/04/08 jQuery
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
2017/07/05 jQuery
VUE : vue-cli中去掉路由中的井号#操作
2020/09/04 Javascript
JS模拟实现京东快递单号查询
2020/11/30 Javascript
Python正则表达式介绍
2012/08/06 Python
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
2017/11/29 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
Django开发的简易留言板案例详解
2018/12/04 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
python线程的几种创建方式详解
2019/08/29 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
pycharm如何使用anaconda中的各种包(操作步骤)
2020/07/31 Python
python3代码中实现加法重载的实例
2020/12/03 Python
饲料采购员岗位职责
2013/12/19 职场文书
医院门卫岗位职责
2013/12/30 职场文书
公司廉洁自律承诺书
2014/03/27 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
八月一日观后感
2015/06/10 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
详解MySQL 联合查询优化机制
2021/05/10 MySQL
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android