AngularJS隔离范围双向绑定示例
时间:2020-02-23 14:29:36 来源:igfitidea点击:
之前我们看过AngularJS隔离范围属性绑定,希望您对隔离范围以及如何使用该属性绑定属性有一个更好的了解。
这是隔离范围教程系列的延续,今天我们将使用" ="来研究隔离范围双向数据绑定。
AngularJS隔离范围双向绑定指令
@字符可以很好地访问传递给指令的字符串值。
但是,它不会使指令中所做的更改与外部或者外部范围保持同步。
如果需要在外部作用域和指令的隔离作用域之间创建双向绑定,则可以使用" ="字符。
在下一节中,我们将通过一个简单的示例来解释这个概念。
隔离范围" ="示例
下面的示例演示了一个指令,该指令使用" ="解释双向绑定。
我们创建了一个控制器MainCtrl,并将ctrlRole等于Development附加到其作用域。
然后创建一个名为myEmployee的指令,在其隔离范围内具有自定义的本地范围属性角色。
app.js
var app = angular.module('mainApp', []); app.controller("MainCtrl", function($scope){ $scope.ctrlRole = "Development" }); app.directive("myEmployee", function() { return { scope: { role:"=" }, template: 'From Directive : <input type="text" ng-model="role">' }; });
" ="字符告诉指令,传递给角色属性的对象应使用双向绑定进行绑定。
" ="字符可确保如果外部属性值更改,则该指令的角色属性应自动更新,反之亦然。
<!DOCTYPE html> <html> <head lang="en"> <meta charset="utf-8"> <title>AngularJS Isolate Scope</title> </head> <body> <div ng-app="mainApp"> <div ng-controller="MainCtrl"> <div> From Controller : <input type="text" ng-model="ctrlRole"></div><br> <div my-employee role="ctrlRole"></div> </div> </div> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script> <script type="text/javascript" src="app.js"></script> </body> </html>
您现在可以使用输出了。
任何一个字段的更改都会自动反映在另一个字段中,或者我们可以说它们之间发生了双向绑定。
隔离范围" = attr"示例
您也可以使用" = attr"属性代替" =",就像我们在上一篇文章中使用@和@attr一样。
以下示例使用" = attr"代替" ="。
app.js
var app = angular.module('mainApp', []); app.controller("MainCtrl", function($scope){ $scope.ctrlRole = "Development" }); app.directive("myEmployee", function() { return { scope: { role:"=myrole" }, template: 'From Directive : <input type="text" ng-model="role">' }; });
您可以在以下HTML中看到这段代码中的更改。
<div my-employee myrole="ctrlRole"></div>
。
我们使用了myrole而不是角色作为属性名称。
<!DOCTYPE html> <html> <head lang="en"> <meta charset="utf-8"> <title>AngularJS Isolate Scope</title> </head> <body> <div ng-app="mainApp"> <div ng-controller="MainCtrl"> <div> From Controller : <input type="text" ng-model="ctrlRole"></div><br> <div my-employee myrole="ctrlRole"></div> </div> </div> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script> <script type="text/javascript" src="app.js"></script> </body> </html>