link属性
Angular中指令与控制器之间的交互(link属性使用)??link属性值为一个函数,link函数主要用于操作dom元素,给dom元素绑定事件和监听,这个函数有五个参数:scope,element,attrs,ctrl,linker 认识link属性的scope、element、attrs方法?下面举个例子: <div ng-controller="myCtrl">
<loader">滑动加载</loader>
</div>
var myModule = angular.module('myModule',[]);
myModule.controller('myCtrl',['$scope',function($scope){
$scope.loadData = function(){
console.log('loadData 加载数据中22222....');
}
}]);
myModule.directive('loader',function(){
return {
restrict : 'AE',link : function(scope,attrs){
element.bind('mouseenter',function(){
scope.loadData();
scope.$apply('loadData()');//和上面一句作用一样
});
}
}
})
这时候,鼠标移动到标签上,控制台输出loadData 加载数据中22222….; <div ng-controller="myCtrl">
<loader hoToLoad="loadData()">滑动加载</loader>
</div>
<div ng-controller="myCtrl2">
<loader hotoload="loadData2()">滑动加载</loader>
</div>
```
想要两个滑动加载标签都响应,就需改变js代码:
```
var myModule = angular.module('myModule',function($scope){
$scope.loadData = function(){
console.log('loadData 加载数据中22222....');
}
}]);
myModule.controller('myCtrl2',function($scope){
$scope.loadData2 = function(){
console.log('loadData2 加载数据中2222....');
}
}]);
myModule.directive('loader',function(){
// scope.loadData();
// scope.$apply('loadData()')
scope.$apply(attrs.hotoload); //注意js中需要写成小写,html中可以是大写
});
}
}
})
认识link属性的ctrl方法? (指令之间怎样交互)??当我们用到link中ctrl属性的时候,就是指令与指令之间的交互,一个指令用到另一个指令的控制器,再举个例子: <div class="row">
<div class="col-md-3">
<superman strength>动感超人---力量</superman>
</div>
</div>
<div class="row">
<div class="col-md-3">
<superman strength speed>动感超人2----力量+敏捷</superman>
</div>
</div>
<div class="row">
<div class="col-md-3">
<superman strength speed light>动感超人3---力量+敏捷+发光</superman>
</div>
</div>
js代码如下,需要注意的点:
var myModule = angular.module('myModule',[]);
myModule.directive('superman',function(){
return {
scope : {},//创建独立作用域
restrict : 'AE',controller : function($scope){//指令内部Controller,给指令暴露出public方法,提供外部调用
$scope.abilities = [];
this.addStrength = function(){
$scope.abilities.push('strength');
};
this.addSpeed = function(){
$scope.abilities.push('speed');
};
this.addLight = function(){
$scope.abilities.push('light');
}
},attrs){
element.addClass('btn btn-primary');
element.bind('mouseenter',function(){
console.log(scope.abilities);
})
}
}
});
myModule.directive('strength',function(){
return {
require : '^superman',//表示strength指令依赖Superman指令
link : function(scope,supermanCtrl){
supermanCtrl.addStrength();
}
}
});
myModule.directive("speed",supermanCtrl){
supermanCtrl.addSpeed();
}
}
});
myModule.directive("light",function(){
return{
require : '^superman',supermanCtrl){
supermanCtrl.addLight();
}
}
});
github源码:03link —— 指令和控制器、指令和指令之间的交互(link属性的使用方法) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |