Tout d'abord, parlons de l'environnement technique actuel : angulaire1.6, ui-route, require Questions :
1 Lequel du modèle chargé par ui-route et du contr?leur enregistré dynamiquement est compilé et exécuté. d'abord? Par exemple : Si je veux obtenir la largeur du #id du modèle, je dois avoir $timeout ? Sinon, undefine
appara?tra 2. La compilation de l'instruction personnalisée est-elle chargée avant le modèle ? chargé en parallèle ?
C’est un peu déroutant, alors j’implore des réponses. J’aimerais également vous remercier pour les articles et explications associés !
Question supplémentaire?: {{}} convertira-t-il automatiquement le type en cha?ne??
Merci, merci beaucoup pour la réponse aussi
閉關(guān)修行中......
官方有詳細(xì)解釋,關(guān)于編譯過程的介紹:
La compilation HTML se déroule en trois phases?:
$compile traverse le DOM et correspond aux directives.
Si le compilateur constate qu'un élément correspond à une directive, alors la
directive est ajoutée à la liste des directives qui correspondent à l'élément DOM
. Un seul élément peut correspondre à plusieurs directives.
Une fois que toutes les directives correspondant à un élément DOM ont été identifiées, le
compilateur trie les directives selon leur priorité.
Les fonctions de compilation de chaque directive sont exécutées. Chaque fonction de compilation
a la possibilité de modifier le DOM. Chaque fonction de compilation
renvoie une fonction de lien. Ces fonctions sont composées en une fonction de lien
"combinée", qui invoque la fonction
lien renvoyée par chaque directive.
$compile lie le modèle à la portée en appelant la fonction de liaison combinée
de l'étape précédente. Cela appellera à son tour la
fonction de liaison des directives individuelles, enregistrant les auditeurs
sur les éléments et en configurant des $watchs avec la portée comme chaque
directive est configurée pour le faire.
Le résultat est une liaison en direct entre le scope et le DOM. Donc à ce stade, un changement dans un modèle sur la portée compilée sera reflété dans le DOM.
具體請(qǐng)題主詳讀 https://docs.angularjs.org/gu... 這篇關(guān)于compiler的文章.
Je pense que la séquence devrait être comme ceci?: chargez le modèle et accédez au contr?leur en même temps, initialisez les données dans le contr?leur, puis entrez dans l'étape $digest pour restituer le modèle. Par conséquent, vous risquez de ne pas obtenir la largeur du #id du modèle pendant le processus de chargement du contr?leur.
écrivez un $timeout qui exécutera le code dans le délai d'attente après la fin de $digest et déclenchera à nouveau $digest.
La phase de compilation des instructions personnalisées détermine en fait la structure du modèle. La phase de compilation peut modifier la structure du modèle. La phase de liaison prépare les données puis restitue le modèle.
S'il y a quelque chose qui ne va pas, corrigez-moi et discutez-en.