Używam funkcji ng-submit w formularzu do przesyłania danych do bazy Firebase, wszystko działa zgodnie z oczekiwaniami. Chciałbym zmienić widoki w tym samym czasie. Na samym przycisku przesyłania mam zestaw ng-click, aby wykonać funkcję za pomocą $ location. Jeśli umieściłem moją funkcję changeView w metodzie .controller, nie mogę wykorzystać $ location (konkretnie, mówi - "Error:" undefined "nie jest obiektem (oceniającym" $ location.path ")"). Każda pomoc będzie super duperem.
// This doesn't work and throws the error
myApp.controller('CtrlName', ['$scope', 'angularFireCollection',
function($scope, angularFireCollection, $location) {
$scope.changeView = function(view) {
$location.path(view);
}
}
]);
// This works as expected, but I'm name spacing my functions globally and I will have to change how I'm accessing my Firebase, which isn't really desired.
function CtrlName($scope, angularFireCollection, $location) {
$scope.changeView = function(view) {
$location.path(view);
}
}
Oto mój szablon:
<form role="form" ng-submit="tactics.add(tactic)">
<div class="form-group">
<label>Select Method</label>
<select class="form-control" ng-model="tactic.type">
<option>Email</option>
<option>Display</option>
<option>SMS</option>
<option>Print</option>
</select>
</div>
<button type="submit" class="btn btn-success" ng-click="changeView('/my-tactics')">Save</button>
</form>
Patrząc na to stanowisko dwa lata później nie mogę uwierzyć, że to robi. Dla każdego, kto indeksuje SO, nie rób tego. Oto, do czego są obietnice. Powinienem był wypalić funkcję, która manipulowała danymi i po jej zakończeniu przeprowadzić odpowiednie przekierowanie. Można to zrobić za pomocą $ http, $ q, a nawet $ save() Firebase. – Swordfish0321