深入理解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 相关文章推荐
用javascript编写的第一人称射击游戏
Feb 25 Javascript
xml 封装与解析(javascript和C#中)
Jul 26 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
Mar 05 Javascript
js格式化时间的方法
Dec 18 Javascript
jQuery UI库中dialog对话框功能使用全解析
Apr 23 Javascript
jQuery实现布局高宽自适应的简单实例
May 28 Javascript
D3.js实现折线图的方法详解
Sep 21 Javascript
AngularJS模板加载用法详解
Nov 04 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
Nov 27 Javascript
微信小程序实现传参数的几种方法示例
Jan 10 Javascript
Vue自定义toast组件的实例代码
Aug 15 Javascript
详解vue-router传参的两种方式
Sep 10 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
虫族 ZERG 概述
2020/03/14 星际争霸
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
让焦点自动跳转
2006/07/01 Javascript
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
基于Jquery的回车成tab焦点切换效果代码(Enter To Tab )
2010/11/14 Javascript
jquery中ajax学习笔记4
2011/10/16 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
浅析用prototype定义自己的方法
2013/11/14 Javascript
浅析javascript的间隔调用和延时调用
2014/11/12 Javascript
C#中使用迭代器处理等待任务
2015/07/13 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
2016/06/07 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
详解Vue-cli代理解决跨域问题
2017/09/27 Javascript
JavaScript基础心法 数据类型
2018/03/05 Javascript
AngularJS ui-router刷新子页面路由的方法
2018/07/23 Javascript
JS加密插件CryptoJS实现的DES加密示例
2018/08/16 Javascript
基于vue-upload-component封装一个图片上传组件的示例
2018/10/16 Javascript
详解auto-vue-file:一个自动创建vue组件的包
2019/04/26 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
用tensorflow实现弹性网络回归算法
2018/01/09 Python
Python机器学习库scikit-learn安装与基本使用教程
2018/06/25 Python
Django1.11配合uni-app发起微信支付的实现
2019/10/12 Python
在Python中使用MongoEngine操作数据库教程实例
2019/12/03 Python
Python小白垃圾回收机制入门
2020/06/09 Python
Silk Therapeutics官网:清洁、抗衰老护肤品
2020/08/12 全球购物
校园文明标语
2014/06/13 职场文书
施工单位安全责任书
2014/07/24 职场文书
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技