À propos de la différence entre lien et contrôleur dans la directive ?
1. Ordre d'exécution : contrôleur d'abord, puis lien
2. Quand utiliser le contrôleur : dans les scénarios généraux, vous ne souhaitez pas utiliser le contrôleur, il vous suffit d'écrire la logique dans le lien ; le scénario dans lequel le contrôleur est utilisé est que l'instruction (supposée être a) sera requise. par d'autres instructions (supposées être b) Quand, ce contrôleur sera passé dans la fonction de lien de l'instruction b (s'il y a plusieurs require, un tableau sera passé, et le contrôleur correspondant à chaque instruction require sera stocké dans le tableau). Le but est évidemment la communication entre les instructions.
Puis-je utiliser un lien pour des portées non directives ?
Le lien est appelé uniquement dans l'instruction, ce qui signifie que le lien est appelé lorsque l'instruction est liée à la portée après la compilation.
Le lien n'est utilisé qu'à l'endroit où l'instruction est définie. Il peut également être utilisé à d'autres endroits. Par exemple, lors de la création d'une boîte contextuelle, vous devez obtenir le modèle tpl, puis appeler var linkFn = $compile(angular.element(tpl));. le temps, une fonction de lien est renvoyée, puis linkFn(scope), la portée ici est la portée que vous devez spécifier, elle peut être nouvellement créée ou existante.
Lien et contrôleur sont des concepts totalement indépendants.
Pour une directive spécifique, il peut n'y avoir pas de contrôleur. Le lien est plus compliqué et peut essentiellement être considéré comme un rappel de $compile. Angularjs doit d'abord compiler pour une directive ---> object-- -> Appeler le lien pour se lier à la portée correspondante ---> Déclencher $digest (il y a plusieurs étapes après cela pour mettre à jour une directive. Le nombre et le moment de la compilation des différents objets sont différents, veuillez consulter l'API pour plus de détails)
En bref, la compilation, les liens et autres sont tous directionnels. Si le sujet est familier avec jquery, alors le processus de compilation équivaut à la création d'objets dom ($('<a class = //... . ') ) le lien est une opération DOM telle que $().append ou prepend.
Alors, quelle est la portée ? La portée est utilisée pour lier des modèles.
Qu'est-ce qu'un contrôleur ? Utilisé pour ajouter des méthodes (logique) à la portée.
Link est un mécanisme d'aspect fourni par AngularJS pour intégrer des directives dans le DOM. Le contrôleur est le contexte dans lequel l'événement de surveillance dans la portée est déclenché, ce qui est complètement différent.
Quant à la dernière question, tant que la fonction peut être exécutée, le code que vous écrivez peut être exécuté, mais de manière générale
1) Écrivez votre logique métier dans le contrôleur, et non dans le propre contrôleur de la directive, mais dans le contrôleur de la portée à laquelle elle est liée
2) N'ayez pas d'opérations DOM dans le contrôleur, en particulier le pré-ajout et l'ajout, car les objets DOM non compilés ne peuvent pas être surveillés et Angularjs ne surveillera pas les objets DOM qui sont ajoutés ultérieurement et n'ont pas été compilés.
À propos de la différence entre lien et contrôleur dans la directive ?
1. Ordre d'exécution : contrôleur d'abord, puis lien
2. Quand utiliser le contrôleur : dans les scénarios généraux, vous ne souhaitez pas utiliser le contrôleur, il vous suffit d'écrire la logique dans le lien ; le scénario dans lequel le contrôleur est utilisé est que l'instruction (supposée être a) sera requise. par d'autres instructions (supposées être b) Quand, ce contrôleur sera passé dans la fonction de lien de l'instruction b (s'il y a plusieurs require, un tableau sera passé, et le contrôleur correspondant à chaque instruction require sera stocké dans le tableau). Le but est évidemment la communication entre les instructions.
Puis-je utiliser un lien pour des portées non directives ?
Le lien est appelé uniquement dans l'instruction, ce qui signifie que le lien est appelé lorsque l'instruction est liée à la portée après la compilation.
Le lien n'est utilisé qu'à l'endroit où l'instruction est définie. Il peut également être utilisé à d'autres endroits. Par exemple, lors de la création d'une boîte contextuelle, vous devez obtenir le modèle tpl, puis appeler
var linkFn = $compile(angular.element(tpl));
. le temps, une fonction de lien est renvoyée, puislinkFn(scope)
, la portée ici est la portée que vous devez spécifier, elle peut être nouvellement créée ou existante.Lien et contrôleur sont des concepts totalement indépendants.
Pour une directive spécifique, il peut n'y avoir pas de contrôleur. Le lien est plus compliqué et peut essentiellement être considéré comme un rappel de $compile. Angularjs doit d'abord compiler pour une directive ---> object-- -> Appeler le lien pour se lier à la portée correspondante ---> Déclencher $digest (il y a plusieurs étapes après cela pour mettre à jour une directive. Le nombre et le moment de la compilation des différents objets sont différents, veuillez consulter l'API pour plus de détails)
En bref, la compilation, les liens et autres sont tous directionnels. Si le sujet est familier avec jquery, alors le processus de compilation équivaut à la création d'objets dom ($('<a class = //... . ') ) le lien est une opération DOM telle que $().append ou prepend.
Alors, quelle est la portée ? La portée est utilisée pour lier des modèles.
Qu'est-ce qu'un contrôleur ? Utilisé pour ajouter des méthodes (logique) à la portée.
Link est un mécanisme d'aspect fourni par AngularJS pour intégrer des directives dans le DOM. Le contrôleur est le contexte dans lequel l'événement de surveillance dans la portée est déclenché, ce qui est complètement différent.
Quant à la dernière question, tant que la fonction peut être exécutée, le code que vous écrivez peut être exécuté, mais de manière générale
1) Écrivez votre logique métier dans le contrôleur, et non dans le propre contrôleur de la directive, mais dans le contrôleur de la portée à laquelle elle est liée
2) N'ayez pas d'opérations DOM dans le contrôleur, en particulier le pré-ajout et l'ajout, car les objets DOM non compilés ne peuvent pas être surveillés et Angularjs ne surveillera pas les objets DOM qui sont ajoutés ultérieurement et n'ont pas été compilés.