深入理解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第二章
Sep 30 Javascript
JSQL 基于客户端的成绩统计实现方法
May 05 Javascript
『jQuery』取指定url格式及分割函数应用
Apr 22 Javascript
深入浅出分析javaScript中this用法
May 09 Javascript
js实现简单折叠、展开菜单的方法
Aug 28 Javascript
Angular.js中上传指令ng-upload的基本使用教程
Jul 30 Javascript
微信小程序movable view移动图片和双指缩放实例代码
Aug 08 Javascript
bootstrap Table的一些小操作
Nov 01 Javascript
AngularJS 表单验证手机号的实例(非必填)
Nov 12 Javascript
vue.js删除列表中的一行
Jun 30 Javascript
vue移动端实现红包雨效果
Jun 23 Javascript
详解关于Vuex的action传入多个参数的问题
Feb 22 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
yii权限控制的方法(三种方法)
2015/12/28 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
Save a File Using a File Save Dialog Box
2007/06/18 Javascript
jQuery 获取URL参数的插件
2010/03/04 Javascript
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
JavaScript中使用arguments获得函数传参个数实例
2014/08/27 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
JavaScript Math.round() 方法
2015/12/18 Javascript
JS深度拷贝Object Array实例分析
2016/03/31 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
js Array.slice的8种不同用法示例
2019/07/10 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
JS常用排序方法实例代码解析
2020/03/03 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
vue+Element-ui实现分页效果
2020/11/15 Javascript
[05:20]卡尔工作室_DOTA2新手教学_DOTA2超强新手功能
2013/04/22 DOTA
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
对python中的 os.mkdir和os.mkdirs详解
2018/10/16 Python
Python文件常见操作实例分析【读写、遍历】
2018/12/10 Python
Django框架视图层URL映射与反向解析实例分析
2019/07/29 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
Python scrapy增量爬取实例及实现过程解析
2019/12/24 Python
Python中无限循环需要什么条件
2020/05/27 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
HTML5自定义视频播放器源码
2020/01/06 HTML / CSS
高考自主招生自荐信
2013/10/20 职场文书
创业计划书之溜冰场
2019/10/25 职场文书
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python
戴尔Win11系统no bootable devices found解决教程
2022/09/23 数码科技