这篇文章主要介绍了angular的scopel指令如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇angular的scopel指令如何使用文章都会有所收获,下面我们一起来看看吧。
创新互联-专业网站定制、快速模板网站建设、高性价比薛城网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式薛城网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖薛城地区。费用合理售后完善,十余年实体公司更值得信赖。
使用代码如下:
.primary{background:red;
}
varmyApp=angular.module('myApp',[]);
myApp.controller('mainCtrl',['$scope',function($scope){
$scope.myClass='primary';
}]);
myApp.directive('myBtn',function(){return{
template:'
}
});
1.png
使用自定义指令像上面一样的确不错,但是如果你想要对每一个指令渲染出来的按钮定制化,则好像不可以,比如下面我们创建一堆这个自定义指令,他们长得一模一样:
.primary{background:red;
}
varmyApp=angular.module('myApp',[]);
myApp.controller('mainCtrl',['$scope',function($scope){
$scope.myClass='primary';
}]);
myApp.directive('myBtn',function(){return{
template:'
}
});
2.png
一种思路是把这几个自定义的指令按钮放到不同的控制器里面,然后控制器里通过$scope上下文传递不同的值:
.primary{background:red;
}.success{background:green;
}.default{background:gray;
}
varmyApp=angular.module('myApp',[]);
myApp.controller('aCtrl',['$scope',function($scope){
$scope.myClass='primary';
}]);
myApp.controller('bCtrl',['$scope',function($scope){
$scope.myClass='success';
}]);
myApp.controller('cCtrl',['$scope',function($scope){
$scope.myClass='default';
}]);
myApp.directive('myBtn',function(){return{
template:'
}
});
3.png
这样写太麻烦了,所以我们的angular为我们的自定义指令提供了一个配置项叫scope,所以,我们可以如下这样写:
.primary{background:red;
}.success{background:green;
}.default{background:gray;
}
varmyApp=angular.module('myApp',[]);
myApp
.controller('Controller',['$scope',function($scope){
$scope.className1='primary';
$scope.className2='success';
$scope.className3='default';
}])
.directive('myBtn',function(){return{
scope:{
a:'=b'
},
template:'
}
});
要看懂上面的只要注意两点:
这里的独立作用域里面的a代表的是template里面的模型a
=b代表的是要angular去寻找视图里面的当前指令的属性b
属性b的值需要去外部作用域里面去寻找
如果你想在指令作用域里绑定的模型的名字和外部使用的时候的属性名一样,可以省写成如下:
.primary{background:red;
}.success{background:green;
}.default{background:gray;
}
varmyApp=angular.module('myApp',[]);
myApp
.controller('Controller',['$scope',function($scope){
$scope.className1='primary';
$scope.className2='success';
$scope.className3='default';
}])
.directive('myBtn',function(){return{
scope:{
a:'='
},
template:'
}
});
当然,上面的=号是双向数据绑定:
.primary{background:red;
}.success{background:green;
}.default{background:gray;
}
varmyApp=angular.module('myApp',[]);
myApp
.controller('Controller',['$scope',function($scope){
$scope.abc='我是初始内容';
}])
.directive('myBtn',function(){return{
scope:{
a:'='
},
template:'
}
});
如果只是想单向的数据通信,可以用@符号:
.primary{background:red;
}.success{background:red;
}.default{background:red;
}
varmyApp=angular.module('myApp',[]);
myApp
.controller('Controller',['$scope',function($scope){
$scope.mm='primary';
}])
.directive('myBtn',function(){return{
scope:{
a:'@'
},
template:'
}
});
如果想用ng-class,也是可以的:
.primary{background:red;
}.success{background:red;
}.default{background:red;
}
varmyApp=angular.module('myApp',[]);
myApp
.controller('Controller',['$scope',function($scope){
$scope.mm=true;
}])
.directive('myBtn',function(){return{
scope:{
a:'@'
},
template:'
}
});
最后,还有一个scope可以设置是引用外部作用域的方法
.primary{background:red;
}.success{background:red;
}.default{background:red;
}
varmyApp=angular.module('myApp',[]);
myApp
.controller('Controller',['$scope',function($scope){
$scope.fn=function(){
alert(11);
}
}])
.directive('myBtn',function(){return{
scope:{
fn1:'&fn2'
},
template:'
}
});
关于“angular的scopel指令如何使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“angular的scopel指令如何使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注创新互联行业资讯频道。