<!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 就同時指向了 一個地址 所有的事情也就順理成章了