📅  最后修改于: 2023-12-03 14:59:19.171000             🧑  作者: Mango
AngularJS是一个非常流行的前端框架,它的指令(directives)是由AngularJS中最为重要的组成部分之一。指令让程序员可以根据自己的需求创建出自定义标签、属性、CSS类,从而实现了无数的功能。在实际的开发中,自定义指令的应用也非常广泛。
AngularJS的指令有内置指令和自定义指令两种。内置指令如ngApp、ngModel、ngBind等,可以实现非常丰富的功能。而自定义指令就是开发者根据自己的需求所创建的指令。自定义指令实际上就是一个函数,函数名称可以自定义,但是函数的入参名称必须是 $scope、$element、$attrs、$timeout、$transclude 等默认参数。
angular.module('myApp',[])
.directive('myDirective',function(){
return {
restrict: 'EA',
template:'<span>这是自定义指令的内容</span>',
replace: true
}
})
在这段代码中,我们定义了一个名为 myDirective 的指令,这个指令是用来创建一个 span 元素并将其内容设置为 “这是自定义指令的内容”。其中 restrict 属性指定指令的使用方式,这里的 “EA” 代表 Element 和 Attribute,也可以写成 “E” 或者 “A” 单独使用。
angular.module('myApp',[])
.directive('myDirective',function(){
return {
restrict: 'EA',
template:'<input type="text" ng-model="name"><br>' +
'<span ng-show="name">Hello, {{name}}!</span>',
scope: {},
link: function(scope, element, attrs, ctrl){
scope.name = "World";
}
}
});
在这个例子中,我们创建了一个名为 myDirective 的指令,它用来接收用户输入的名字并显示出来。在 template 属性中,我们创建了一个输入框和一个显示控件,同时使用了 AngularJS 的变量插值功能,并绑定了输入框的 ng-model 属性。
在 link 函数中,我们对 $scope.name 进行了初始化,最终的显示效果是显示 “Hello, World!”。当用户在输入框中输入名字时,Hello, World! 的内容会发生改变。因为这个指令使用了独立的 scope,因此不会影响到外部的变量。