AngularJS中isolate scope的用法分析
(编辑:jimmy 日期: 2025/11/11 浏览:3 次 )
本文实例讲述了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"
};
})
模板:
下一篇:详解js界面跳转与值传递

