Au lieu de poster dans la liste de diffusion angulaire, je pense que cela peut être plus de la question JavaScript. J'espère que la communauté peut également donner une réponse plus rapide.
J'essaie d'encapsuler les données dans un service et de l'injection dans le contrôleur. P>
angular.module('myApp.services', ['ngResource']). factory('Player', function($resource){ var Player ; Player= $resource('/api/Player/:_id', {} ) return Player }); function PlayerDetailCtrl(Player, $routeParams, $scope) { $scope.resource = Player.Player.get({_id:$routeParams._id}); } PlayerDetailCtrl.$inject = ['Player', '$routeParams', '$scope'];
3 Réponses :
On dirait que le JS se plaint du code pour le joueur. Je suppose que lecteur = $ ressource ('/ API / lecteur /: _ id', {}) code> fait code> lecteur code> a un appel de propriété
Query code>. Le formulaire que vous avez changé pour ne pas faire
lecteur code> avoir cette propriété. P>
J'apprends toujours JS, alors essayant de comprendre pourquoi. Comment ça différent si une enveloppe dans un objet?
Si vous regardez dans la fonction $ ressource code>, il peut avoir
requête code> comme une propriété de l'objet de retour. Mais vous avez changé en
{ressource: $ ressource ('/ API / lecteur /: _ id', {})} code>, qui n'a pas la propriété appelée
requête code>
Alors, n'est-ce pas autorisé à chaîner les méthodes?
Que voulez-vous dire par enchaînant les méthodes dans votre contexte?
OK, après quelques essais, les suivants ont fonctionné.
Player = { resource: function() { return $resource('/api/Player/:_id', {} ) } };
Vous créez une usine, c'est la manière atypique de faire. Vous ne voulez pas retourner une instance. Angular vous donnera une instance dans votre contrôleur.
factory('CommentSvc', function ($resource) { return $resource('/cakephp/demo_comments/:action/:id/:page/:limit:format', { id:'@id', 'page' : '@page', 'limit': '@limit' }, { 'initialize' : { method: 'GET', params: { action : 'initialize', format: '.json' }, isArray : true }, 'save': { method: 'POST', params: { action: 'create', format: '.json' } }, 'query' : { method: 'GET', params: { action : 'read', format: '.json' } , isArray : true }, 'update': { method: 'PUT', params: { action: 'update', format: '.json' } }, });
Dan, je reconnais votre nom de la liste de diffusion angulaire :-). Je voulais ajouter des méthodes personnalisées au service. Je pourrais également créer une autre et injecter également, mais je me demandais si je pouvais éviter de créer un service juste pour renvoyer un objet de ressource, mais encapsuler des fonctionnalités plus connues. Ce que vous pensez?
Je ne sais pas que je comprends, vous pouvez ajouter des méthodes personnalisées que vous souhaitez utiliser un objet de ressources, si les mêmes défaut ne répondent pas à vos besoins.
euh. J'ajoutais une fonction non-ressource à cette usine / service. Par exemple, la mise en cache de la réponse à la demande d'obtention initiale et de la définir à $ de portée dans les contrôleurs. Peut être un anti-motif, mais j'apprends toujours.
Vous pouvez injecter des services dans d'autres services afin que vous puissiez obtenir une réutilisation là-bas. J'encendie des objets de ressources pour rendre l'application testable et flexible.
J'ai posté un message dans la liste de diffusion angulaire
Super. Le service d'injection à un autre est meilleur. Merci d'avoir suggéré. Veuillez partager votre pensée sur mon message dans la liste de diffusion. Merci.
Hey Dan, merci pour cette brillante morceau de code. Fonctionne absolument bien. J'essaie de cancer les données dans une fabrique de cache et de ne pas être capable de le faire fonctionner. Donc, fondamentalement, je veux que cela reçoive les données une fois et la mettre en cache et chaque requête ultérieure Shud soit servie à partir de cache. Avez-vous un exemple de ce code?
@bsr grande question. Avec la version 1.2, l'équipe angulaire a permis de remplacer / étendre les modules, ce serait donc une pratique acceptée. NG-Ressource a toujours été toujours séparée. Vous pouvez étendre la ressource NG ou (écrire le vôtre) et l'espace de noms avec votre propre nom. Mieux ne pas utiliser le même nom de «ressource NG». Cela vous donnerait la capacité d'avoir votre propre fonctionnalité encapsulée.
Intéressant. Est
lecteur: $ ressource ('/ API / lecteur /: _ id', {}) code> JavaScript valide?
Extrêmement désolé, éditerait entre-temps. Cela fonctionne si j'ignent à une variable et à l'accès à travers elle, mais pas si vous assignez à l'intérieur d'un objet. Merci
@Graceshao
lecteur: $ ressource ('/ API / lecteur /: _ id', {}) code> oui s'il fait partie d'une définition de membre ...