Mam 2 trasy, które współdzielą kontroler, jeden potrzebuje danych rozwiązanych przed załadowaniem widoku, a drugi nie potrzebuje rozwiązanych danych.W jaki sposób można ręcznie wstawiać dane trasowania trasy do kontrolera?
Routing przykład segmentu:
...
when('/users', {
controller: 'UsersCtrl',
templateUrl: '/partials/users/view.html',
resolve: {
resolvedData : ['Accounts', function(Accounts) {
return Accounts.get();
}]
}
}).
when('/users/add', {
controller: 'UsersCtrl',
templateUrl: '/partials/users/add.html'
})
...
Controller przykład:
app.controller('UsersCtrl', ['$scope', 'Helper', 'resolvedData',
function($scope, Helper, resolvedData) {
// this works for the first route, but fails for the second route with
// unknown "resolvedDataProvider"
console.log(resolvedData);
}]);
Czy jest jakiś sposób mogę uzyskać resolvedData
w sterowniku bez jawnie przy użyciu name resolve jako zależność? Czy można więc sprawdzić?
Używanie wtryskiwacza $ nie działa. Chciałbym zrobić coś podobnego do:
if ($injector.has('resolveData')) {
var resolveData = $injector.get('resolveData');
}
Jednak to nie działa nawet na trasie, która ma resolveData
set ('/ Users'):
app.controller('UsersCtrl', ['$scope', 'Helper', '$injector',
function($scope, Helper, $injector) {
// this does not work -> fails with the unknown "resolvedDataProvider" as well
$injector.get('resolvedData');
}]);
można to zrobić w angularjs ? Czy powinienem po prostu stworzyć nowy kontroler?
Dziękuję.
W jaki sposób to rozwiązanie jest lepsze niż moje? Zasadniczo robisz dokładnie to samo, z wyjątkiem używania zakopanego obiektu w usłudze routingu, aby go ukończyć. Moje rozwiązanie pozwala na jednorodność routera, a kontroler nadal obsługuje sytuację. – Fourth
@Fourth - Nie sądzę, aby dodanie niewykorzystanego rozstrzygnięcia, które powróciło niezdefiniowane na trasie, byłoby lepszym wyjściem, powiedzmy, że moje rozwiązanie lepiej odpowiada moim potrzebom ... Przekazałem odpowiedź, ale nie wierzę w to, że moja jest uzasadniona. –
Nie korzystasz z funkcji kątowych w zamierzony sposób. Chociaż na pewno znalazłeś odpowiedź "działa", nie używa ona funkcji w zamierzony sposób. Rozgrywki trasy są sposobem na wstrzykiwanie komponentów do kontrolera. Składniki te mogą, z uzasadnionych przyczyn, być niezdefiniowane, jeśli rozstrzygnięcie nie ma sensu dla tej trasy. Zgadzam się z tobą, aby zniechęcić innych do korzystania z tego rozwiązania, co jest uzasadnione. – Fourth