AngularJS: Comment passer des valeurs du contrôleur à la méthode de service?
J'ai un contrôleur qui est dépendante d'une TransactionService
. L'une des méthode est
$scope.thisMonthTransactions = function () {
$scope.resetTransactions();
var today = new Date();
$scope.month = (today.getMonth() + 1).toString();
$scope.year = today.getFullYear().toString();
$scope.transactions = Transaction.getForMonthAndYear();
};
La TransactionService
ressemble
angular.module('transactionServices', ['ngResource']).factory('Transaction', function ($resource, $rootScope) {
return $resource('/users/:userId/transactions/:transactionId',
//todo: default user for now, change it
{userId: 'bd675d42-aa9b-11e2-9d27-b88d1205c810', transactionId: '@uuid'},
{
getRecent: {method: 'GET', params: {recent: true}, isArray: true},
getForMonthAndYear: {method: 'GET', params: {month: 5, year: 2013}, isArray: true}
});
});
Comme vous pouvez le voir, la méthode getForMonthAndYear
dépend de deux paramètres month
et year
qui sont codés en dur, maintenant, alors que params: {month: 5, year: 2013}
. Comment puis-je transmettre ces données à partir de mon contrôleur?
J'ai essayé d'injecter rootScope
dans TransactionService
mais qui n'a pas aidé(ce qui signifie que je ne sais pas comment l'utiliser probablement).
Aussi Angulaire ngResource documentation ne recommande pas de toute façon de l'effectuer.
Quelqu'un peut s'il vous plaît guide ici?
Mise à JOUR
Mon Contrôleur ressemble
function TransactionsManagerController($scope, Transaction) {
$scope.thisMonthTransactions = function () {
$scope.resetTransactions();
var today = new Date();
$scope.month = (today.getMonth() + 1).toString();
$scope.year = today.getFullYear().toString();
var t = new Transaction();
$scope.transactions = t.getForMonthAndYear({month: $scope.month});
};
}
et j'ai changer de méthode de service de
getForMonthAndYear: {method: 'GET', params: {month: @month, year: 2013}, isArray: true}
Je regarde le console.log
et il dit
Uncaught SyntaxError: Unexpected token ILLEGAL transaction.js:11
Uncaught Error: No module: transactionServices
source d'informationauteur daydreamer
Vous devez vous connecter pour publier un commentaire.
La définition des paramètres de la ressource constructeur ne sont nécessaires que lorsque l'appel doit avoir une valeur par défaut si aucun n'est fourni. Tout paramètre passé à la méthode est jointe en tant que requête param, indépendamment de si elle a une valeur par défaut définie. Le '@' signifie que les paramètres de la valeur est remplacée par ce qui est renvoyé dans la réponse JSON, de sorte que votre @uuid du bon sens, mais pas votre @mois.
Personnellement, je voudrais juste créer la ressource comme suit:
Puis ajouter les variables de requête au besoin en les passant dans. (Créant ainsi des noms de méthode est bien, mais pas nécessaire pour se présenter de deux manières ci-dessous.)
J'ai eu le même problème, j'ai fini par retourner paramétrées, les fonctions de mon service, de sorte que le service ressemble à ça
et en appelant le service à partir du contrôleur:
pas sûr que ce soit le plus propre angular.js solution, mais ça marche!!!
Une façon de le faire est d'injecter le service dans votre contrôleur:
Ensuite, vous pouvez accéder à une instance de votre service à travers le transactionService paramètre.
MODIFIER
découvrez ce violon me Dire si cela est assez proche de ce que vous essayez de faire