comment puis-je passer la portée du contrôleur au service dans angularjs?
J'ai le contrôleur suivant:
'use strict';
/* Controllers */
angular.module('stocks.controllers', []).
controller('MyCtrl1', ['$scope', '$http', 'stockData', function MyCtrl1 ($scope, $http, stockData) {
$scope.submit = function() {
$scope.info = stockData.query();
console.dir($scope.info);
}
}]);
et je veux passer un lié ng-model qui se trouve dans mon point de vue appelé ng-model="symbol_wanted"
pour le service suivant...
'use strict';
/* Services */
angular.module('stocks.services', ['ngResource']).factory('stockData', ['$resource',
function($resource){
return $resource('http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22YHOO%22)%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json', {}, {
query: {method:'GET', isArray:false}
});
}]);
comment puis-je connecter le contrôleur de champ pour obtenir passé dans le service? merci!
source d'informationauteur Sunny Day
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas injecter $champ d'application dans les services, il n'y a pas une telle chose comme un Singleton $champ d'application.
Vous pouvez appeler le service et de passer des paramètres de cette façon:
Nous avons donc appel à ce service et obtenir une promesse de retour comme ceci:
BTW, je vous suggérons d'utiliser
$http.get
:Démo Violon
Votre
ng-model
valeur deviendra automatiquement un champ d'application de la propriété. Ainsi, vous pouvez simplement utiliser dans votre contrôleur pour obtenir la valeur actuelle:Donc, disons que vous avez une fonction pour gérer le clic de votre contrôleur:
Vous pouvez simplement utiliser l'étendue de la propriété.