深入理解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实现奇偶行赋值不同css值
Feb 17 Javascript
javascript-表格排序(降序/反序)实现介绍(附图)
May 30 Javascript
javascript中match函数的用法小结
Feb 08 Javascript
sogou地图API用法实例教程
Sep 11 Javascript
详解JavaScript表单验证(E-mail 验证)
Mar 31 Javascript
jQuery与js实现颜色渐变的方法
Dec 30 Javascript
js禁止Backspace键使浏览器后退的实现方法
Sep 01 Javascript
vue小白入门教程
Apr 02 Javascript
微信小程序canvas拖拽、截图组件功能
Sep 04 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
Jul 10 jQuery
微信小程序中网络请求缓存的解决方法
Dec 29 Javascript
微信小程序开发打开另一个小程序的实现方法
May 17 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 MySql增删改查的简单实例
2016/06/21 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
自制PHP框架之路由与控制器
2017/05/07 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
限制复选框的最大可选数
2006/07/01 Javascript
javascript 硬盘序列号+其它硬件信息
2008/12/23 Javascript
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
2011/10/13 Javascript
纯Javascript实现Windows 8 Metro风格实现
2013/10/15 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
JavaScript数组去重的两种方法推荐
2016/04/05 Javascript
JS 实现随机验证码功能
2017/02/15 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
Vue.js实现表格渲染的方法
2018/09/07 Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
2018/09/21 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
原生js实现轮播图特效
2020/05/04 Javascript
python实现自动登录人人网并访问最近来访者实例
2014/09/26 Python
基础的十进制按位运算总结与在Python中的计算示例
2016/06/28 Python
对numpy中数组转置的求解以及向量内积计算方法
2018/10/31 Python
Python3日期与时间戳转换的几种方法详解
2019/06/04 Python
基于python修改srt字幕的时间轴
2020/02/03 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
网页布局中CSS样式无效的十个重要原因详解
2017/08/10 HTML / CSS
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
e路東瀛(JAPANiCAN)香港:日本旅游、日本酒店和温泉旅馆预订
2018/11/21 全球购物
美国宠物护理专家:Revival Animal Health
2020/01/05 全球购物
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
纬创Java面试题笔试题
2014/10/02 面试题
C#如何判断当前用户是否输入某个域
2015/12/07 面试题
保护环境建议书100字
2014/05/13 职场文书
励志演讲稿800字
2014/08/21 职场文书
一年级数学下册复习计划
2015/01/17 职场文书
SpringCloud Alibaba 基本开发框架搭建过程
2021/06/13 Java/Android