2014-11-15 13 views
5

segue è il mio codice:AngularJS router ui angolare - trasmettere dati personalizzati al controllore

.state('tab.dash', { 
     url: '/dash', 
     views: { 
      'tab-dash': { 
       templateUrl: 'templates/tab1.html', 
       controller: 'QuestionsCtrl' 
       //,resolve: { type: '.net' } 
      } 
     } 
    }) 

    .state('tab.friends', { 
     url: '/friends', 
     views: { 
      'tab-friends': { 
       templateUrl: 'templates/tab1.html', 
       controller: 'QuestionsCtrl' 
       //,resolve: { type: 'SQL' } 
      } 
     } 
    }) 

voglio passare aa proprietà personalizzata diverso per questi due percorsi dato che usano lo stesso controller e Vista, al fine di differenziarlo Ho provato un sacco di cose. Si prega di aiutare come fare questo!

risposta

14

è possibile trasmettere dati personalizzati come segue

.state('tab.dash', { 
     url: '/dash', 
     data: { 
     customData1: 5, 
     customData2: "blue" 
     }, 
     views: { 
      'tab-dash': { 
       templateUrl: 'templates/tab1.html', 
       controller: 'QuestionsCtrl' 
       //,resolve: { type: '.net' } 
      } 
     } 
    }) 

    .state('tab.friends', { 
     url: '/friends', 
     data: { 
     customData1: 6, 
     customData2: "orange" 
     }, 
     views: { 
      'tab-friends': { 
       templateUrl: 'templates/tab1.html', 
       controller: 'QuestionsCtrl' 
       //,resolve: { type: 'SQL' } 
      } 
     } 
    }) 

nel controller, è possibile ottenere il valore di dati come segue

function QuestionsCtrl($state){ 
    console.log($state.current.data.customData1); 
    console.log($state.current.data.customData2); 
} 

Per saperne di più su questo argomento qui https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views#inherited-custom-data

+0

thnks un sacco asik – Lakshay

+0

benvenuto! Felice di aiutare!! :) – Asik

0

Ci sono diverse opzioni per farlo,

Per dati più piccoli imposta l'utilizzo del $ cookieStore, per i dati inferiori a 4k Un'altra opzione, in particolare con set di dati di grandi dimensioni, consiste nell'utilizzare la memoria locale e quindi recuperare i dati nella pagina di caricamento/ricarica. se è solo una piccola quantità di dati, o dati che vengono utilizzati attraverso una pagina multipla, si può usare $ rootcope, ma questa non è l'opzione migliore in quanto equivale a inquinare lo spazio dei nomi globale. L'ultima opzione, a seconda di come vengono recuperati i dati, potrebbe essere implementato un servizio, che è fondamentalmente un singleton che può essere passato a vari ambiti angolari.

Problemi correlati