2014-11-15 17 views
5

Poniżej znajduje mój kod:angularjs routera kątowe ui - przekazywanie danych niestandardowych do kontrolera

.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' } 
      } 
     } 
    }) 

Chcę przekazać aa inną właściwość niestandardową do powyższych dwóch trasach ponieważ oni używają tego samego kontrolera i widoku, w celu odróżnić to. Próbowałem wielu rzeczy. Pomóżcie, jak to zrobić!

Odpowiedz

14

można przekazywać dane niestandardowe następująco

.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' } 
      } 
     } 
    }) 

w kontroler, można uzyskać wartość danych następująco

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

Czytaj więcej na ten temat tutaj https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views#inherited-custom-data

+0

thnks dużo asik – Lakshay

+0

witamy! Miło, że mogłem pomóc!! :) – Asik

0

Istnieją kilka opcji, aby to zrobić,

Dla mniejszych danych zestawy, w których można użyć $ cookieStore, dla danych poniżej 4k Inną opcją, szczególnie w przypadku dużych zestawów danych, byłoby użycie Magazynu lokalnego, a następnie pobranie danych po wczytaniu/przeładowaniu strony. jeśli jest to bardzo mała ilość danych lub danych używanych przez wiele stron, można użyć $ rootscope, ale nie jest to najlepsza opcja, ponieważ po prostu zanieczyszcza globalną przestrzeń nazw. Ostatnia opcja, w zależności od sposobu pobierania danych, może zostać zaimplementowana usługa, która jest w zasadzie pojedyncza, która może być przekazana do różnych zakresów kątowych.

Powiązane problemy