深入理解Angularjs向指令传递数据双向绑定机制

下面来先看一个简单例子

<!DOCTYPE html> <html lang="zh-CN" ng-app="app"> <head> <meta charset="utf-8"> <title></title> <link href="https://www.jb51.net/bootstrap.min.js"> </head> <body> <label>硬编码的input</label> <input type="text" ng-model="Url"> <div my-directive some-attr="Url"></div> <script src="https://www.jb51.net/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 就同时指向了 一个地址 所有的事情也就顺理成章了

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwjgjj.html