Maison interface Web js tutoriel Une introduction détaillée à la compréhension de la portée de l'isolation et de la stratégie de liaison dans AngularJS

Une introduction détaillée à la compréhension de la portée de l'isolation et de la stratégie de liaison dans AngularJS

Jun 01, 2017 am 09:36 AM

Cet article présente principalement la compréhension détaillée de la portée de l'isolement et de la stratégie de liaison dans angularjs. Les amis intéressés peuvent s'y référer. >Regardons d'abord l'exemple suivant :

Nous regardons le code dans IsolateScope :
<!doctype html> 
<html ng-app="MyModule"> 
 <head> 
  <meta charset="utf-8"> 
  <link rel="stylesheet" href="css/bootstrap-3.0.0/css/bootstrap.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" > 
 </head> 
 <body> 
  <hello></hello> 
  <hello></hello> 
  <hello></hello> 
  <hello></hello> 
 </body> 
 <script src="framework/angular-1.3.0.14/angular.js"></script> 
 <script src="IsolateScope.js"></script> 
</html>
Copier après la connexion

A ce moment, lors de l'exécution de la page, nous constatons que tant que comme là Lorsque l'entrée dans une entrée change, le contenu de toutes les entrées changera :
var myModule = angular.module("MyModule", []); 
myModule.directive("hello", function() { 
 return { 
  restrict: &#39;AE&#39;, 
  template: &#39;<p><input type="text" ng-model="userName"/>{{userName}}</p>&#39;, 
  replace: true 
 } 
});
Copier après la connexion

Cela sera confronté à un problème : nos instructions ne peuvent pas être utilisées seules, il y a donc Introduire la notion de portée indépendante.

En définissant la portée sur {}, chaque commande a son propre espace de portée indépendant, elle ne s'affectera donc pas les unes les autres. Mais le concept le plus important dans Angularjs est : la stratégie de liaison. Il a la stratégie de liaison suivante :
var myModule = angular.module("MyModule", []); 
myModule.directive("hello", function() { 
 return { 
  restrict: &#39;AE&#39;, 
  scope:{}, 
  template: &#39;<p><input type="text" ng-model="userName"/>{{userName}}</p>&#39;, 
  replace: true 
 } 
});
Copier après la connexion

Étape 1 :

Regardons la manière originale, c'est-à-dire ne pas utiliser les trois méthodes de liaison ci-dessus

Regardez le contenu dans ScopeAt :
<!doctype html> 
<html ng-app="MyModule"> 
 <head> 
  <meta charset="utf-8"> 
  <link rel="stylesheet" href="css/bootstrap-3.0.0/css/bootstrap.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" > 
 </head> 
 <body> 
 <!--控制器MyCtrl下面有指令drink,同时指令drink还有自定义的属性flavor,其值为‘百威&#39;--> 
  <p ng-controller="MyCtrl"> 
   <drink flavor="{{ctrlFlavor}}"></drink> 
  </p> 
 </body> 
 <script src="framework/angular-1.3.0.14/angular.js"></script> 
 <script src="ScopeAt.js"></script> 
</html>
Copier après la connexion

La structure du DOM à l'heure actuelle est la suivante :
var myModule = angular.module("MyModule", []); 
myModule.controller(&#39;MyCtrl&#39;, [&#39;$scope&#39;, function($scope){ 
 $scope.ctrlFlavor="百威"; 
 //在控制器中$scope中设置了ctrlFlavor属性 
}]) 
//定义了drink指令 
myModule.directive("drink", function() { 
 return { 
  restrict:&#39;AE&#39;, 
  template:"<p>{{flavor}}</p>" , 
   link:function(scope,element,attrs){ 
   scope.flavor=attrs.flavor; 
   //链接的时候把drink指令上的flavor属性放在scope中,然后在template中显示 
   } 
 } 
});
Copier après la connexion

Cependant, this La première façon consiste à obtenir la valeur d'attribut de cette instruction via attrs.flavor, puis vous devez lier cette valeur d'attribut à l'objet scope

Enfin, vous pouvez obtenir la portée dans le modèle via {. {}}. La valeur dans !

Deuxième étape :

Nous utilisons le @ ci-dessus pour remplacer la première méthode, car elle doit spécifier la fonction linkpar elle-même. à chaque fois:

Cette méthode consiste à lier la valeur de l'attribut de saveur dans l'instruction de boisson à l'objet scope, et ceci est automatiquement lié par ng pour nous. Cependant, @binding lie une
var myModule = angular.module("MyModule", []); 
myModule.controller(&#39;MyCtrl&#39;, [&#39;$scope&#39;, function($scope){ 
 $scope.ctrlFlavor="百威"; 
 //在控制器中$scope中设置了ctrlFlavor属性 
}]) 
//定义了drink指令 
myModule.directive("drink", function() { 
 return { 
  restrict:&#39;AE&#39;, 
  scope:{ 
   flavor:&#39;@&#39; 
  }, 
  template:"<p>{{flavor}}</p>" 
 } 
});
Copier après la connexion
chaîne

, pas un objet !

Étape 3 :

Apprenons-en à la liaison de données bidirectionnelle

Jetons un coup d'œil au contenu du contrôleur
<!doctype html> 
<html ng-app="MyModule"> 
 <head> 
  <meta charset="utf-8"> 
  <link rel="stylesheet" href="css/bootstrap-3.0.0/css/bootstrap.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" > 
 </head> 
 <body> 
 <!--指定了控制器MyCtrl--> 
  <p ng-controller="MyCtrl"> 
   Ctrl: 
   <br> 
   <!--第一个输入框输入值绑定到ctrlFlavor,也就是控制器MyCtrl对应的ctrlFlavor值中--> 
   <input type="text" ng-model="ctrlFlavor"> 
   <br> 
   Directive: 
   <br> 
   <!--第二个输入框还是通过指令的方式来完成的--> 
   <drink flavor="ctrlFlavor"></drink> 
  </p> 
 </body> 
 <script src="framework/angular-1.3.0.14/angular.js"></script> 
 <script src="ScopeEqual.js"></script> 
</html>
Copier après la connexion

Il s'agit de la méthode de liaison '='. Il implémente une stratégie de liaison de données bidirectionnelle. Jetons un coup d'oeil à quoi ressemble la structure finale du DOM :
var myModule = angular.module("MyModule", []); 
//指定了控制器对象 
myModule.controller(&#39;MyCtrl&#39;, [&#39;$scope&#39;, function($scope){ 
 $scope.ctrlFlavor="百威"; 
}]) 
//指定了指令 
myModule.directive("drink", function() { 
 return { 
  restrict:&#39;AE&#39;, 
  scope:{ 
   flavor:&#39;=&#39; 
   //这里通过&#39;=&#39;指定了drink指令的flavor和scope中的双向数据绑定! 
  }, 
  template:&#39;<input type="text" ng-model="flavor"/>&#39; 
 } 
});
Copier après la connexion

En fait, la liaison de données bidirectionnelle

Étape 4 :

Nous utilisons la liaison & stratégie pour terminer l'appel de la méthode parent du contrôleur :

Trois instructions de salutation sont définies, chaque instruction doit appeler une méthode sayHello dans le contrôleur (Comment réaliser l'interaction entre le contrôleur et l'instruction dans angulairejs. souligne qu'il peut être transmis. La manière de définir les attributs permet une interaction entre les contrôleurs et les instructions, mais ici nous pouvons compléter la même fonction via un simple &) et transmettre différentes valeurs de nom de paramètre :
<!doctype html> 
<html ng-app="MyModule"> 
 <head> 
  <meta charset="utf-8"> 
  <link rel="stylesheet" href="css/bootstrap-3.0.0/css/bootstrap.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" > 
 </head> 
 <body> 
  <p ng-controller="MyCtrl"> 
  <!--接下来是三个自定义的指令greeting指令--> 
   <greeting greet="sayHello(name)"></greeting> 
   <greeting greet="sayHello(name)"></greeting> 
   <greeting greet="sayHello(name)"></greeting> 
  </p> 
 </body> 
 <script src="framework/angular-1.3.0.14/angular.js"></script> 
 <script src="ScopeAnd.js"></script> 
</html>
Copier après la connexion

Il peut être complété via & en appelant la méthode d'action parent au lieu d'utiliser la méthode traditionnelle de spécification des attributs de l'instruction pour terminer la communication entre le contrôleur et l'instruction !
var myModule = angular.module("MyModule", []); 
//为控制器指定了一个sayHello方法,同时为这个方法可以传入一个参数 
myModule.controller(&#39;MyCtrl&#39;, [&#39;$scope&#39;, function($scope){ 
 $scope.sayHello=function(name){ 
  alert("Hello "+name); 
 } 
}]) 
myModule.directive("greeting", function() { 
 return { 
  restrict:&#39;AE&#39;, 
  scope:{ 
   greet:&#39;&&#39;//传递一个来自父scope的函数用于稍后调用,获取greet参数,得到sayHello(name)函数 
  }, 
  //在template中我们在ng-click中指定一个参数,其指定方式为调用controller中greet方法,传入的参数name值为username 
  //也就是ng-model=&#39;userName&#39;中指定的参数 
  template:&#39;<input type="text" ng-model="userName" /><br/>&#39;+ 
     &#39;<button class="btn btn-default" ng-click="greet({name:userName})">Greeting</button><br/>&#39; 
 } 
});
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les 5 derniers tutoriels Angularjs en 2022, de l'entrée à la maîtrise Les 5 derniers tutoriels Angularjs en 2022, de l'entrée à la maîtrise Jun 15, 2017 pm 05:50 PM

Javascript est un langage tout à fait unique. Il est unique en termes d'organisation du code, de paradigme de programmation du code et de théorie orientée objet. La question de savoir si Javascript est un langage orienté objet a été débattue depuis un certain temps. Il y a évidemment une réponse depuis longtemps. Cependant, même si Javascript est dominant depuis vingt ans, si vous souhaitez comprendre les frameworks populaires tels que jQuery, Angularjs et même React, il suffit de regarder le « Black Horse Cloud Classroom JavaScript Advanced Framework ». Tutoriel vidéo de conception".

Utilisez PHP et AngularJS pour créer un site Web réactif afin d'offrir une expérience utilisateur de haute qualité Utilisez PHP et AngularJS pour créer un site Web réactif afin d'offrir une expérience utilisateur de haute qualité Jun 27, 2023 pm 07:37 PM

À l’ère de l’information d’aujourd’hui, les sites Web sont devenus un outil important permettant aux individus d’obtenir des informations et de communiquer. Un site Web réactif peut s’adapter à divers appareils et offrir aux utilisateurs une expérience de haute qualité, ce qui est devenu un point chaud dans le développement de sites Web modernes. Cet article expliquera comment utiliser PHP et AngularJS pour créer un site Web réactif afin d'offrir une expérience utilisateur de haute qualité. Introduction à PHP PHP est un langage de programmation open source côté serveur idéal pour le développement Web. PHP présente de nombreux avantages, tels que la facilité d'apprentissage, la multiplateforme, la riche bibliothèque d'outils et l'efficacité du développement.

Créer des applications Web en utilisant PHP et AngularJS Créer des applications Web en utilisant PHP et AngularJS May 27, 2023 pm 08:10 PM

Avec le développement continu d'Internet, les applications Web sont devenues un élément important de la construction de l'information d'entreprise et un moyen nécessaire au travail de modernisation. Afin de faciliter le développement, la maintenance et l'extension des applications Web, les développeurs doivent choisir un cadre technique et un langage de programmation adaptés à leurs besoins de développement. PHP et AngularJS sont deux technologies de développement Web très populaires. Ce sont respectivement des solutions côté serveur et côté client. Leur utilisation combinée peut considérablement améliorer l'efficacité du développement et l'expérience utilisateur des applications Web. Avantages de PHPPHP

Utilisez PHP et AngularJS pour développer une plateforme de gestion de fichiers en ligne afin de faciliter la gestion des fichiers Utilisez PHP et AngularJS pour développer une plateforme de gestion de fichiers en ligne afin de faciliter la gestion des fichiers Jun 27, 2023 pm 01:34 PM

Avec la popularité d’Internet, de plus en plus de personnes utilisent le réseau pour transférer et partager des fichiers. Cependant, pour diverses raisons, l'utilisation de méthodes traditionnelles telles que FTP pour la gestion de fichiers ne peut pas répondre aux besoins des utilisateurs modernes. Par conséquent, la création d’une plateforme de gestion de fichiers en ligne facile à utiliser, efficace et sécurisée est devenue une tendance. La plate-forme de gestion de fichiers en ligne présentée dans cet article est basée sur PHP et AngularJS. Elle peut facilement effectuer des opérations de téléchargement, de modification, de suppression et autres, et fournit une série de fonctions puissantes, telles que le partage de fichiers, la recherche,

Comment utiliser AngularJS en programmation PHP ? Comment utiliser AngularJS en programmation PHP ? Jun 12, 2023 am 09:40 AM

Avec la popularité des applications Web, le framework front-end AngularJS est devenu de plus en plus populaire. AngularJS est un framework JavaScript développé par Google qui vous aide à créer des applications Web dotées de fonctionnalités d'application Web dynamiques. En revanche, pour la programmation backend, PHP est un langage de programmation très populaire. Si vous utilisez PHP pour la programmation côté serveur, utiliser PHP avec AngularJS apportera des effets plus dynamiques à votre site Web.

Créez une application Web d'une seule page à l'aide de Flask et AngularJS Créez une application Web d'une seule page à l'aide de Flask et AngularJS Jun 17, 2023 am 08:49 AM

Avec le développement rapide de la technologie Web, l'application Web à page unique (SinglePage Application, SPA) est devenue un modèle d'application Web de plus en plus populaire. Par rapport aux applications Web multipages traditionnelles, le plus grand avantage de SPA est que l'expérience utilisateur est plus fluide et que la pression de calcul sur le serveur est également considérablement réduite. Dans cet article, nous expliquerons comment créer un SPA simple à l'aide de Flask et AngularJS. Flask est un Py léger

Introduction aux bases d'AngularJS Introduction aux bases d'AngularJS Apr 21, 2018 am 10:37 AM

Le contenu de cet article concerne l'introduction de base à AngularJS. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer.

Comment utiliser PHP et AngularJS pour le développement front-end Comment utiliser PHP et AngularJS pour le développement front-end May 11, 2023 pm 05:18 PM

Avec la popularité et le développement d’Internet, le développement front-end est devenu de plus en plus important. En tant que développeurs front-end, nous devons comprendre et maîtriser divers outils et technologies de développement. Parmi eux, PHP et AngularJS sont deux outils très utiles et populaires. Dans cet article, nous verrons comment utiliser les deux outils pour le développement front-end. 1. Introduction à PHP PHP est un langage de script open source populaire côté serveur. Il convient au développement Web et peut fonctionner sur des serveurs Web et divers systèmes d'exploitation. Les avantages de PHP sont la simplicité, la rapidité et la commodité

See all articles