Cet article présente l'introduction du composant angularjs. Voyons comment fonctionne le composant. Alors commencez tout de suite à lire cet article
Préface sur Angularjs :
Les frameworks JS front-end les plus populaires sont désormais comme VUE, REACK et ANGULAR. les caractéristiques communes des frameworks sont la liaison de données bidirectionnelle et le développement de composants. Avant la version d'angular1.5, la directive était utilisée comme formulaire de composant, et la directive elle-même est une instruction, pas un composant, elle ne peut donc pas assumer la responsabilité d'un composant, donc Google dans angulaire1 Le composant composant a été lancé dans la version 5. pour assumer le fardeau du développement des composants dans les applications. Alors, comment fonctionnent les composants ? Comment doit-il être utilisé ? Nous explorerons l’utilisation des composants en détail dans ce chapitre.
Dans AngularJS, Component est plus adapté au développement basé sur des composants qu'à la directive.
Regardons d'abord un exemple de composant relativement simple.
index.html
<!DOCTYPE html><html lang="en" ng-app="ComponentTestApp"><head> <meta charset="UTF-8"> <title>Document</title></head><body ng-controller="MainCtrl as ctrl"> <h3>hero</h3> <br> <hero-detail hero='ctrl.hero'></hero-detail> <script src="js/angular.js"></script> <script src="js/index.js"></script> <script src="js/heroDetail.js"></script></body></html>
Dans index.html nous définissons une balise hero-detail. La méthode de déclaration de cette balise est similaire à la directive. cette balise. Un attribut hero-detail est défini. Quel est le but de cet attribut défini ? Regardons
index.js
(function(angular){ angular.module('ComponentTestApp',[]) .controller('MainCtrl',function(){ this.hero = { name:'Sunday' } });})(angular);
Dans index.js nous déclarons ce contrôleur, et dans le contrôleur nous écrivons cette ligne de code
this.hero = { name:'Sunday' }
Je crois que les amis attentifs ont déjà remarqué que oui, cela correspond à l'attribut hero='ctrl.hero'
que nous avons déclaré dans index.html, qui est la clé de communication dans le composant.
heroDetail.html
<h1>HeroName: {{$ctrl.hero.name}}</h1>
Dans heroDetail.html, nous affichons la valeur transférée depuis index.html.
heroDetail.js
(function(angular){ function HeroDetailController(){ } angular.module('ComponentTestApp') .component('heroDetail',{ templateUrl:'views/heroDetail.html', controller:HeroDetailController, bindings:{ hero:'=' } });})(angular);
Dans heroDetail.js, nous déclarons le composant de heroDetail. Ici, nous devons faire attention aux balises affichées séparées par des barres horizontales dans index.html, dans le fichier. js, la notation CamelCase est requise pour l'affichage. Parmi eux : l'objet de liaison, représentant le protocole de communication dans le composant.
Voici maintenant l'effet d'affichage sur la page :
Lorsque nous utilisons des liaisons pour la liaison de données, le responsable ne recommande pas d'utiliser "=" pour la liaison de données , car "=" est une liaison de données bidirectionnelle, ce qui signifie que lorsque nous modifions les données du composant, la valeur de son composant parent sera également modifiée. La recommandation officielle est d'utiliser "<" pour la liaison de données unidirectionnelle. Il convient de noter que même si nous utilisons "<", le même objet est référencé dans le composant parent et dans la portée du composant, donc si vous le souhaitez. modifier la propriété d'objet du composant ou l'élément de tableau dans le composant parent reflétera toujours la modification. (Si vous voulez en savoir plus, rendez-vous sur le site PHP chinois Manuel de développement AngularJS pour en savoir)
OK, après avoir introduit la liaison de données, la liaison entre le composant et la méthode du composant parent est Comment ça se passe ?
Regardons l'exemple suivant
index.html
<!DOCTYPE html><html lang="en" ng-app="ComponentTestApp"><head> <meta charset="UTF-8"> <title>Document</title></head><body ng-controller="MainCtrl as ctrl"> <hero-detail on-log="ctrl.log(text)"></hero-detail> <script src="js/angular.js"></script> <script src="js/index.js"></script> <script src="js/heroDetail.js"></script></body></html>
index.js
(function(angular){ angular.module('ComponentTestApp',[]) .controller('MainCtrl',function(){ this.log = function(text){ console.log("输出的内容为: " + text); } });})(angular);
heroDetail.html
<input type="text" placeholder="被输出的内容" ng-model="text"><br><button ng-click="onLog()">outputLog</button>
heroDetail.js
(function(angular){ function HeroDetailController($scope){ $scope.text = ''; var ctrl = this; $scope.onLog = function(){ ctrl.onLog({text:$scope.text}); } } angular.module('ComponentTestApp') .component('heroDetail',{ templateUrl:'views/heroDetail.html', controller:HeroDetailController, bindings:{ onLog:'&' } });})(angular);
Dans le code, nous utilisons le symbole "&" pour lier une méthode onLog(). Cette méthode reçoit un paramètre texte. Il convient de noter que lorsque le paramètre est passé, est transmis sous forme de json. De cette façon, lorsque nous cliquons sur le bouton OutputLog, le contenu que nous avons entré dans l'entrée sera affiché.
D'accord, cet article se termine ici (si vous voulez en voir plus, rendez-vous sur le site Web PHP chinois Manuel d'utilisation d'AngularJS pour en savoir plus). Si vous avez des questions, vous pouvez laisser un message). ci-dessous.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!