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
Vous devez vous connecter pour publier un commentaire.
Vous n'êtes pas d'injecter de l'
$location
objet dans votre contrôleur. Dans vos paramètres de fonction, mais vous avez oublié de l'ajouter à la liste avant de ladite fonction.Content d'avoir pu aider. Votre autre problème pourrait être attribuée à l'aide de
ng-submit
dans votre balise de formulaire mais leng-click
dans le bouton soumettre est la prise de "priorité", parce que sa fait changement de votre chemin d'accès d'URL. Il peut ne pas l'être prend le pas mais c'est certainement la modification de votre URL/vue avant ou juste après votre formulaire de soumission.OriginalL'auteur m.e.conroy
Aussi, n'oubliez pas d'ajouter $emplacement dans votre action:
OriginalL'auteur Vadim
Ah la vache, je ne peux pas croire que j'ai jamais fait cela. #Facepalm. Ici est la bonne façon de le rediriger sur la soumission d'un formulaire.
Modèle
Contrôleur
Changements Notables:
OriginalL'auteur Scott Sword