深入理解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 学习之二 属性(html()与html(val))
Nov 25 Javascript
javascript检测页面是否缩放的小例子
May 16 Javascript
js 得到文件后缀(通过正则实现)
Jul 08 Javascript
javascript 处理null及null值示例
Jun 09 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
Jan 05 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
Mar 13 Javascript
JavaScript中document.referrer的用法详解
Jul 04 Javascript
关于react中组件通信的几种方式详解
Dec 10 Javascript
JavaScript数组特性与实践应用深入详解
Dec 30 Javascript
jQuery中each和js中forEach的区别分析
Feb 27 jQuery
layui下拉框获取下拉值(select)的例子
Sep 10 Javascript
JavaScript实现页面高亮操作提示和蒙板
Jan 04 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与C#的值类型指向区别的详解
2013/05/21 PHP
php 获取页面中指定内容的实现类
2014/01/23 PHP
php基于socket实现SMTP发送邮件的方法
2015/03/05 PHP
Zend Framework教程之Zend_Registry对象用法分析
2016/03/22 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
2017/06/27 PHP
基于jquery循环map功能的代码
2011/02/26 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
VueJs路由跳转——vue-router的使用详解
2017/01/10 Javascript
高效的jQuery代码编写技巧总结
2017/02/22 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
JS实现table表格内针对某列内容进行即时搜索筛选功能
2018/05/11 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
2018/10/10 Javascript
使用jQuery实现掷骰子游戏
2019/10/24 jQuery
Vue.js实现立体计算器
2020/02/22 Javascript
python中反射用法实例
2015/03/27 Python
Python的Django框架中settings文件的部署建议
2015/05/30 Python
python组合无重复三位数的实例
2018/11/13 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
2019/08/12 Python
Python爬取腾讯视频评论的思路详解
2019/12/19 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
Python使用grequests并发发送请求的示例
2020/11/05 Python
Python解析微信dat文件的方法
2020/11/30 Python
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
美国折扣香水网站:The Perfume Spot
2020/12/12 全球购物
教师自我评价范文
2013/12/16 职场文书
致接力运动员广播稿
2014/02/17 职场文书
公司爱心捐款倡议书
2014/05/14 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
2015年小学教导处工作总结
2015/05/26 职场文书
Go语言读取txt文档的操作方法
2022/01/22 Golang
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js