深入理解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 $.each() 使用小探
Aug 23 Javascript
JavaScript删除指定子元素代码实例
Jan 13 Javascript
JS中完美兼容各大浏览器的scrolltop方法
Apr 17 Javascript
Javascript递归打印Document层次关系实例分析
May 15 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
Dec 03 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
Feb 18 Javascript
简单实现js放大镜效果
Jul 24 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
Mar 18 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
Oct 09 Javascript
详解javascript函数写法大全
Mar 25 Javascript
详解a标签添加onclick事件的几种方式
Mar 29 Javascript
CKeditor4 字体颜色功能配置方法教程
Jun 26 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上传文件问题汇总
2015/01/30 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
json 定义
2008/06/10 Javascript
JQuery实现超链接鼠标提示效果的方法
2015/06/10 Javascript
简介JavaScript中setUTCSeconds()方法的使用
2015/06/12 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
将Sublime Text 3 添加到右键中的简单方法
2017/12/12 Javascript
Vue组件之极简的地址选择器的实现
2018/05/31 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
2019/04/29 Javascript
微信小程序封装分享与分销功能过程解析
2019/08/13 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
vue 计算属性和侦听器的使用小结
2021/01/25 Vue.js
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
Python的一些用法分享
2012/10/07 Python
django中静态文件配置static的方法
2018/05/20 Python
点球小游戏python脚本
2018/05/22 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
关于python中remove的一些坑小结
2021/01/04 Python
澳大利亚窗帘商店:Curtain Wonderland
2019/12/01 全球购物
《愚公移山》教学反思
2014/02/20 职场文书
大学毕业生求职自荐信
2014/02/20 职场文书
计算机网络及管理学专业求职信
2014/06/05 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
办公室主任个人总结
2015/02/28 职场文书
军事博物馆观后感
2015/06/05 职场文书
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android
JS中如何优雅的使用async await详解
2021/10/05 Javascript
《传颂之物 虚伪的假面》BD发售宣传CM公开
2022/04/04 日漫