深入理解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 submit()无法提交问题
Apr 21 Javascript
IE、FF、Chrome浏览器中的JS差异介绍
Aug 13 Javascript
全面理解面向对象的 JavaScript(来自ibm)
Nov 10 Javascript
全面理解JavaScript中的继承(必看)
Jun 16 Javascript
原生js实现自由拖拽弹窗代码demo
Jun 29 Javascript
JavaScript生成.xls文件的代码
Dec 22 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
Mar 03 Javascript
Vue.set()实现数据动态响应的方法
Feb 07 Javascript
微信小程序使用npm支持踩坑
Nov 07 Javascript
送你43道JS面试题(收藏)
Jun 17 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
Jul 05 Javascript
JavaScript中的this/call/apply/bind的使用及区别
Mar 06 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代码
2010/08/08 PHP
php牛逼的面试题分享
2013/01/18 PHP
解析php curl_setopt 函数的相关应用及介绍
2013/06/17 PHP
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
php实现socket推送技术的示例
2017/12/20 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
Laravel框架文件上传功能实现方法示例
2019/04/16 PHP
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
充分发挥Node.js程序性能的一些方法介绍
2015/06/23 Javascript
jQuery操作iframe中js函数的方法小结
2016/07/06 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
EditPlus中的正则表达式 实战(2)
2016/12/15 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
2017/04/24 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
基于js 各种排序方法和sort方法的区别(详解)
2018/01/03 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
JavaScript实现简单计算器功能
2019/12/19 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
TensorFlow 输出checkpoint 中的变量名与变量值方式
2020/02/11 Python
python3 xpath和requests应用详解
2020/03/06 Python
浅谈Python中re.match()和re.search()的使用及区别
2020/04/14 Python
python使用openpyxl操作excel的方法步骤
2020/05/28 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
django inspectdb 操作已有数据库数据的使用步骤
2021/02/07 Python
python3判断IP地址的方法
2021/03/04 Python
社会实践自我鉴定
2013/11/07 职场文书
学习十八大坚定理想信念心得体会
2014/03/11 职场文书
少年派的奇幻漂流观后感
2015/06/08 职场文书
爱的教育观后感
2015/06/17 职场文书
反腐倡廉学习心得体会范文
2015/08/15 职场文书
初中政治教师教学反思
2016/02/23 职场文书
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL