深入理解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 EasyUI 的EasyLoader功能介绍
Sep 12 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
Nov 21 Javascript
js select option对象小结
Dec 20 Javascript
jquery实现的导航固定效果
Apr 28 Javascript
JS实现OCX控件的事件响应示例
Sep 17 Javascript
Backbone.js 0.9.2 源码注释中文翻译版
Jun 25 Javascript
JavaScript function函数种类详解
Feb 22 Javascript
jquery拖动改变div大小
Jul 04 jQuery
Angularjs自定义指令实现分页插件(DEMO)
Sep 16 Javascript
bootstrap datetimepicker控件位置异常的解决方法
Nov 23 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
Jan 18 jQuery
JavaScript如何获取一个元素的样式信息
Jul 29 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
饭制《星际争霸》Mod:优化游戏机制 增加新单位
2017/07/02 星际争霸
用PHP实现图象锐化代码
2007/06/14 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
2016/03/10 PHP
php构造方法中析构方法在继承中的表现
2016/04/12 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
JavaScript 实现模态对话框 源代码大全
2009/05/02 Javascript
jQuery动态地获取系统时间实现代码
2013/05/24 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
2013/06/24 Javascript
jQuery快速上手:写jQuery与直接写JS的区别详细解析
2013/08/26 Javascript
js中for in的用法示例解析
2013/12/25 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
2017/10/09 Javascript
在vue中使用jointjs的方法
2018/03/24 Javascript
vue自定义一个v-model的实现代码
2018/06/21 Javascript
nodejs 使用 js 模块的方法实例详解
2018/12/04 NodeJs
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
2021/01/08 Vue.js
Python3.6笔记之将程序运行结果输出到文件的方法
2018/04/22 Python
pygame游戏之旅 游戏中添加显示文字
2018/11/20 Python
基于python实现KNN分类算法
2020/04/23 Python
Pytorch中膨胀卷积的用法详解
2020/01/07 Python
python图形界面开发之wxPython树控件使用方法详解
2020/02/24 Python
Python用Jira库来操作Jira
2020/12/28 Python
美国按摩椅批发网站:Titan Chair
2018/12/27 全球购物
AutoShack.com加拿大:北美主要的汽车零部件零售商
2019/07/24 全球购物
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
怎么处理XML的中文问题
2015/03/26 面试题
高中学生会竞选演讲稿
2014/08/25 职场文书
2014最新开业庆典策划方案(5篇)
2014/09/15 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书
2016中秋节广告语
2016/01/28 职场文书
导游词之太行山青龙峡
2020/01/14 职场文书
python中requests库+xpath+lxml简单使用
2021/04/29 Python
Nginx的基本概念和原理
2022/03/21 Servers