2013-04-21 17 views
5

Dopo aver studiato diversi progetti e aver letto tutta la documentazione che riesco a gestire, ho riscontrato un problema con il modo in cui includere le direttive nella mia app. L'applicazione è strutturata come le seguenti:Angular - Direttive e utilizzo del modulo

app.js - solo la parte superiore

angular.module('ngDashboard', ['ngCookies','ngResource','ngDashboard.filters', 'ngDashboard.services', 'ngDashboard.directives']) 

Tutti i moduli funzionano bene, tranne (si tratta di un app riscritto da un esempio) per le direttive che don' t lavoro a tutti:

directives.js - il seguente non funziona e non esegue la direttiva sulla vista:

angular.module('ngDashboard.directives', []). 
    directive('funkyElement', function() { 
    return { 
     restrict: 'E', 
     transclude: true, 
     scope: 'isolate', 
     template: '<div>gonna parse this: {{orig}} <br/>... and get this: {{obj}}</div>', 
     //templateUrl: 'template.html', 
     compile:function (element, attr, transclusionFunc) { 
      return function (scope, iterStartElement, attr) { 
       var origElem = transclusionFunc(scope); 
       var content = origElem.text(); 
       scope.orig = content; 
       scope.obj = my_custom_parsing(content); 
      }; 
     } 
    }; 
}); 

il seguente nello stesso file directives.js fa funzionare correttamente e la direttiva esegue:

angular.module('ng').directive('funkyElement', function() { 
    return { 
     restrict: 'E', 
     transclude: true, 
     scope: 'isolate', 
     template: '<div>gonna parse this: {{orig}} <br/>... and get this: {{obj}}</div>', 
     //templateUrl: 'template.html', 
     compile:function (element, attr, transclusionFunc) { 
      return function (scope, iterStartElement, attr) { 
       var origElem = transclusionFunc(scope); 
       var content = origElem.text(); 
       scope.orig = content; 
       scope.obj = my_custom_parsing(content); 
      }; 
     } 
    }; 
}); 

L'HTML è semplice:

<funky-element> 
    Parse me... come ooooon! Just parse meee! 
</funky-element> 

La mia domanda è, qual è il modo corretto per includere una serie di direttive e, forse, il motivo per cui il primo esempio (utilizzando il ngDashboard.services) non funziona.

+0

Potresti inviare un plunker con il codice live? È quasi impossibile dire cosa sta succedendo senza vedere altro codice. Basandomi su ciò che posso vedere finora presumo che tu non stia inizializzando la tua app usando 'ng-app =" ngDashboard "' o se le cose si sono mischiate quando hai incluso i file. Ancora una volta, il codice live mostrerà chiaramente tutto questo. –

+0

Inserirò del codice dal vivo, ma l'intera app funziona bene, tutti i servizi, i controller, l'unica cosa che non funziona correttamente è la direttiva. – lucuma

+0

È stato memorizzato nella cache il file app.js o non ho premuto Salva dopo aver aggiunto la dipendenza direttiva. Dopo averci giocato per così tanto tempo, dubito che non sia stato salvato, ma sono aperto a questa possibilità. – lucuma

risposta

5

Si scopre che il file app.js che avevo era memorizzato nella cache in modo tale che la dipendenza della direttiva non fosse presente o che avevo trascurato di salvarlo (entrambi possibili con il lavoro del fine settimana e le tarda notte). Dal momento che questo problema è stato risolto dopo che ho fatto un aggiornamento per app.js io lo segnaliamo come deliberato con la consulenza di:

  1. Controllare la console script per assicurarsi che i file non vengono memorizzati nella cache
  2. Spegnere memorizzazione nella cache completamente o utilizzare la modalità di navigazione in incognito.
  3. sempre assicurarsi che il ng-app viene aggiunta al documento (non era il caso, ma potrebbe aiutare qualcun altro)
  4. Assicurarsi di salvare i file
  5. Bere più caffè quando si è stanchi e l'apprendimento di una nuova linguaggio di programmazione/quadro.

Infine, per quanto riguarda Angular, non mi ero reso conto che si potevano aggiungere direttive al modulo ng e sarebbero diventate disponibili. Sono sicuro che questa non è una buona pratica, ma per testare e mettere insieme un codice veloce, potrebbe tornare utile.

Problemi correlati