Ne pouvez pas accéder à $emplacement lors de l'utilisation .méthode de contrôleur dans AngularJS

Je suis en utilisant ng-soumettre un formulaire pour envoyer des données à un Firebase, tout fonctionne comme prévu. Ce que je voudrais faire est de modifier la vue en même temps. Sur le bouton soumettre lui-même, j'ai ng-cliquez sur définir pour exécuter une fonction à l'aide de $emplacement. Si je place ma changeView fonction dans un .contrôleur de méthode, je ne peux pas utiliser $emplacement (plus précisément, il dit: "Erreur: 'undefined' n'est pas un objet (évaluation '$lieu.chemin d'accès")"). Toute aide serait super duper.

//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);
    }

}

Voici mon template:

<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>
La recherche à ce poste deux ans plus tard, je ne peux pas croire que je faisais ça. Pour quelqu'un ramper DONC, ne pas le faire. C'est ce que les promesses sont pour. Ce que j'aurais dû faire était de tirer une fonction qui a manipulé les données et une fois terminé, puis effectuer les rediriger. Cela peut être fait avec $http, $q, ou même Firebase $save().

OriginalL'auteur Scott Sword | 2013-09-06