深入理解Angularjs向指令传递数据双向绑定机制
下面来先看一个简单例子
<!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 就同时指向了 一个地址 所有的事情也就顺理成章了
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
相关文章
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
这篇文章主要介绍了AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能,结合实例形式分析了AngularJS自定义过滤器的定义及数组过滤相关操作技巧,需要的朋友可以参考下2018-04-04Angular4集成ng2-file-upload的上传组件
本篇文章主要介绍了Angular4集成ng2-file-upload的上传组件,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-03-03AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
这篇文章主要介绍了AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值的相关资料,本文介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下2016-01-01解决angularJS中input标签的ng-change事件无效问题
今天小编就为大家分享一篇解决angularJS中input标签的ng-change事件无效问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-09-09AngularJS学习笔记之基本指令(init、repeat)
AngularJS 指令是扩展的 HTML 属性,带有前缀 ng-。ng-app 指令初始化一个 AngularJS 应用程序。ng-init 指令初始化应用程序数据。ng-model 指令把应用程序数据绑定到 HTML 元素。2015-06-06
最新评论