本文執行個體講述了AngularJS中isolate scope的用法。分享給大家供大家參考,具體如下:
angular js中指令directive有個特別有用的東西,那就是 isolate scope (被隔離的scope)
關於具體他和全域的scope 有什麼區別,可以參考下面這篇文章:
AngularJS 全域scope與Isolate scope通訊用法樣本
本文主要講解 其具體的幾種使用方式:
1. = 的使用
[html]
<div class="card" ng-repeat="app in apps"> <app-info info="app"></app-info></div>
[js]
app.directive('appInfo', function() { return { restrict: 'E', scope: { info: '=' //如果是 = 就是info屬性的值 賦給 當前scope.info }, templateUrl: 'js/directives/appInfo.html' };});
2. =屬性名稱 的使用
[html]
<div ng-controller="AppCtrl as appctrl"> Ctrl <input type="text" ng-model="appctrl.ctrlFlavor"> Dir <div ab="25" drink="123456" flavor="appctrl.ctrlFlavor"></div></div>
[js]
var app = angular.module("drinkApp", []);app.controller("AppCtrl", function() { var appctrl = this; appctrl.ctrlFlavor = "blackberry";});app.directive("drink", function() { return { scope: { flavor: "=ab" }, template: '<input type="text" ng-model="flavor">' };});
顯示結果:
3. @ = 和 & 的綜合使用
html 代碼:
<div class="mainController" ng-app="isolateApp"> <div ng-controller="AppCtrl"> <div class="row"> <character name="Roman Regins" image="img/p1.jpg" movetype="movetype" use-move="getMove(name,movetype,move)" class="col-xs-4"></character> <character name="Seth Rollins" image="./img/p2.jpg" movetype="movetype" use-move="getMove(name,movetype,move)" class="col-xs-4"></character> <character name="Dean Ambrose" image="./img/p3.jpg" movetype="movetype" use-move="getMove(name,movetype,move)" class="col-xs-4"></character> </div> </div></div>
js控制:
//顯示@ = 和 &綜合的var app = angular.module('isolateApp',[]);app.controller("AppCtrl",['$scope',"$element",function($scope,$element){ $scope.getMove = function(name,movetype,move){ console.log(name+'$$$'+movetype+'$$$'+move); } $scope.movetypes = ['amove','bavi','cmp4']; $scope.movetype = $scope.movetypes[0];}]).directive("character",function(){ return { restrict:"E", scope:{ name:"@", //@指的是屬性的值賦給name 僅此而已 image:"@", movetype:"=", //表示類型等於當前屬性的值 useMove:"&" //&表示對應的函數的引用 及該屬性對應的函數別名就是他了 }, controller:"AppCtrl", //只有這裡聲明了 才會將select選項載入進來 replace:true, templateUrl:"shield_isolate.html" };})
模板:
<script type="text/ng-template" id="shield_isolate.html"> <div class="panel panel-default"> <div class="panel-body"> <div> <figure> <img src="{{image}}"> <figcaption>{{name}}</figcaption> </figure> </div> </div> <div>Move: <input type="text" ng-model="value" class="form-controller"/> </div> <div> Select Move Type: <select ng-model="movetype" ng-options="movetype for movetype in movetypes"> </select> </div> <div class="panel-footer clearfix"> <div class="btn btn-primary" ng-click="useMove({name:name,movetype:movetype,move:value})" >Action!</div> //這裡的":"前的三個參數分別對應 父函數的三個參數的名稱 //":" 後的三個參數則對應 給定值scope 的三個屬性 以便一一對應傳值 </div> </div></script>
顯示結果:
希望本文所述對大家AngularJS程式設計有所協助。