AngularJS 中的scope($scope)
A.单/双向绑定 B.指令继承控制器的作用域 <!DOCTYPE html>
<html ng-app="labApp">
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<script src="js/lib/angular.js"></script>
<script src="js/app.js"></script>
</head>
<body>
<div ng-controller="defaultCtrl">
<p id="one" lab-input></p>
<p id="two" lab-input></p>
</div>
</body>
</html>
app.js angular
.module("labApp",[])
.controller('defaultCtrl',function($scope){
$scope.nickname="xiaofanku";
})
.directive('labInput',function(){
return {
template:'<p><input type="text" ng-model="nickname" /></p>'
};
});
总结: C.指令使用自已/实例的作用域 angular
.module("labApp",function(){
return {
//新增的
controller:function($scope){
$scope.nickname="pktmandy";
},template:'<p><input type="text" ng-model="nickname" /></p>'
};
});
总结: app.js angular
.module("labApp",function(){
return {
//新增的
scope:true,controller:function($scope){
$scope.nickname="pktmandy";
},template:'<p><input type="text" ng-model="nickname" /></p>'
};
});
总结: D.指令中的隔离作用域 angular
.module("labApp",function(){
return {
scope:{},template:'<p><input type="text" ng-model="nickname" /></p>',link:function(scope,element,attrs){
scope.$watch('nickname',function(v){
console.log('current nickname:'+v);
});
}
};
});
输入顺序: E.连接指令隔离作用域和控制器(defaultCtrl)中的作用域 <!DOCTYPE html> <html ng-app="labApp"> <head> <title>TODO supply a title</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <script src="js/lib/angular.js"></script> <script src="js/app.js"></script> </head> <body> <div ng-controller="defaultCtrl"> <p id="one" lab-input nickname="{{nickname}}"></p> <p id="two" lab-input></p> </div> </body> </html>
app.js angular
.module("labApp",function($scope){
$scope.nickname="xiaofanku";
$scope.$watch('nickname',function(v){
console.log('controller current nickname:'+v);
});
})
.directive('labInput',function(){
return {
scope:{
nickname:'@'
},function(v){
console.log('directive current nickname:'+v);
});
}
};
});
E.2:从defaultCtrl中到labInput的之间的双向绑定:= <div ng-controller="defaultCtrl">
<p id="one" lab-input nickname="nickname"></p>
<p id="two" lab-input></p>
</div>
如果还是使用{{}}会报以下错误: 总结: E.3 从指令(labInput)中调用控制器(defaultCtrl)中的行为:& <!DOCTYPE html>
<html ng-app="labApp">
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<script src="js/lib/angular.js"></script>
<script src="js/app.js"></script>
</head>
<body>
<div ng-controller="defaultCtrl">
<p id="one" lab-input nickname="nickname" re-action="reverse()"></p>
<p id="two" lab-input></p>
</div>
</body>
</html>
app.js angular
.module("labApp",function($scope){
$scope.nickname="xiaofanku";
$scope.reverse=function(){
$scope.nickname=$scope.nickname.split("").reverse().join("");
};
$scope.$watch('nickname',function(){
return {
scope:{
nickname:'=',reAction:'&'
},template:'<p><input type="text" ng-model="nickname" ng-click="reAction()" /></p>',function(v){
console.log('directive current nickname:'+v);
});
}
};
});
总结: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |