AngularJS - कस्टम निर्देश
HTML की कार्यक्षमता को बढ़ाने के लिए AngularJS में कस्टम निर्देशों का उपयोग किया जाता है। कस्टम निर्देशों को "निर्देश" फ़ंक्शन का उपयोग करके परिभाषित किया गया है। एक कस्टम निर्देश केवल उस तत्व को प्रतिस्थापित करता है जिसके लिए यह सक्रिय है। बूटस्ट्रैप के दौरान AngularJS एप्लिकेशन मेल खाने वाले तत्वों को ढूंढता है और कस्टम निर्देश के अपने संकलन () विधि का उपयोग करके एक बार गतिविधि करता है फिर निर्देश के दायरे के आधार पर कस्टम निर्देश के लिंक () विधि का उपयोग करके तत्व को संसाधित करता है। निम्नलिखित प्रकार के तत्वों के लिए कस्टम निर्देश बनाने के लिए AngularJS सहायता प्रदान करता है।
Element directives - निर्देशन तब सक्रिय होता है जब एक मेल तत्व का सामना होता है।
Attribute - एक मिलान विशेषता का सामना करने पर निर्देश सक्रिय होता है।
CSS - एक सीएसएस शैली का सामना होने पर निर्देश सक्रिय हो जाता है।
Comment - जब एक मिलान टिप्पणी सामने आती है तो निर्देश सक्रिय हो जाता है।
कस्टम निर्देश को समझना
कस्टम HTML टैग्स को परिभाषित करें।
<student name = "Mahesh"></student><br/>
<student name = "Piyush"></student>
कस्टम HTML टैग्स से ऊपर जाने के लिए कस्टम निर्देश को परिभाषित करें।
var mainApp = angular.module("mainApp", []);
//Create a directive, first parameter is the html element to be attached.
//We are attaching student html tag.
//This directive will be activated as soon as any student element is encountered in html
mainApp.directive('student', function() {
//define the directive object
var directive = {};
//restrict = E, signifies that directive is Element directive
directive.restrict = 'E';
//template replaces the complete element with its text.
directive.template = "Student: <b>{{student.name}}</b> ,
Roll No: <b>{{student.rollno}}</b>";
//scope is used to distinguish each student element based on criteria.
directive.scope = {
student : "=name"
}
//compile is called during application initialization. AngularJS calls
it once when html page is loaded.
directive.compile = function(element, attributes) {
element.css("border", "1px solid #cccccc");
//linkFunction is linked with each element with scope to get the element specific data.
var linkFunction = function($scope, element, attributes) {
element.html("Student: <b>"+$scope.student.name +"</b> ,
Roll No: <b>"+$scope.student.rollno+"</b><br/>");
element.css("background-color", "#ff00ff");
}
return linkFunction;
}
return directive;
});
निर्देशांक के लिए गुंजाइश अद्यतन करने के लिए नियंत्रक को परिभाषित करें। यहां हम नाम विशेषता के मान को स्कोप के बच्चे के रूप में उपयोग कर रहे हैं।
mainApp.controller('StudentController', function($scope) {
$scope.Mahesh = {};
$scope.Mahesh.name = "Mahesh Parashar";
$scope.Mahesh.rollno = 1;
$scope.Piyush = {};
$scope.Piyush.name = "Piyush Parashar";
$scope.Piyush.rollno = 2;
});
उदाहरण
<html>
<head>
<title>Angular JS Custom Directives</title>
</head>
<body>
<h2>AngularJS Sample Application</h2>
<div ng-app = "mainApp" ng-controller = "StudentController">
<student name = "Mahesh"></student><br/>
<student name = "Piyush"></student>
</div>
<script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js">
</script>
<script>
var mainApp = angular.module("mainApp", []);
mainApp.directive('student', function() {
var directive = {};
directive.restrict = 'E';
directive.template = "Student: <b>{{student.name}}</b> ,
Roll No: <b>{{student.rollno}}</b>";
directive.scope = {
student : "=name"
}
directive.compile = function(element, attributes) {
element.css("border", "1px solid #cccccc");
var linkFunction = function($scope, element, attributes) {
element.html("Student: <b>"+$scope.student.name +"</b> ,
Roll No: <b>"+$scope.student.rollno+"</b><br/>");
element.css("background-color", "#ff00ff");
}
return linkFunction;
}
return directive;
});
mainApp.controller('StudentController', function($scope) {
$scope.Mahesh = {};
$scope.Mahesh.name = "Mahesh Parashar";
$scope.Mahesh.rollno = 1;
$scope.Piyush = {};
$scope.Piyush.name = "Piyush Parashar";
$scope.Piyush.rollno = 2;
});
</script>
</body>
</html>
उत्पादन
एक वेब ब्राउज़र में textAngularJS.htm खोलें । परिणाम देखें।