5

bug étrange .....Delay et initialiser manuellement mdl materialLayout

  • J'ai une condition de course où mes directives AngularJS pour header et drawer compilent après matériau conception-lite initialise la mise en page.

  • Cela semble seulement se produire lorsque je ferme mon réseau Wi-Fi et que je travaille hors ligne. Aucune ressource distante n'est requise, bien que google tag manager et le plug-in facebook connect échouent dans l'onglet réseau.

Questions:

  1. Puis-je retarder l'initialisation automatique de MDL (que je vois arrive onload de la page
  2. Puis-je réinitialiser manuellement le mdl-mise en page afin qu'elle construit correctement la? bouton de tiroir, etc, encore une fois?
  3. Est-ce que quelqu'un a une idée pourquoi être hors ligne causerait des problèmes de rendu/javascript?

J'ai déjà essayé window.componentHandler.upgradeAllRegistered() mais cela ne veut pas ré-initialiser la mise en page

+0

pourquoi pas seulement 'componentHandler.upgradeElement (document.body)' lorsque votre angulaire est complètement Commité les DOM au navigateur? – ClojureMostly

Répondre

0

Voilà comment je résolu le problème au cas où quelqu'un court d'autre dans cette (mdl condition de course avec angulaire):

  1. charge la bibliothèque material.js une fois que la directive d'en-tête a chargé
  2. attente pour window.componentHandler
  3. Puis, utilisez window.componentHandler.upgradeAllRegistered();

code complet (placé dans la directive d'en-tête)

function materialize(){ 
     var script = document.createElement('script'); 
     script.src = 'assets/js/material.js'; 
     document.body.appendChild(script); 
     (function upgrade(){ 
      if (!window.componentHandler){ 
       return $timeout(upgrade, 200); 
      } 
      $timeout(window.componentHandler.upgradeAllRegistered); 
     })(); 
}