我如何通过从范围控制器angularjs到服务? [英] how do i pass scope from controller to service in angularjs?
问题描述
我有以下控制器:
使用严格的; / * *控制器/ angular.module('stocks.controllers',[])。
控制器('MyCtrl1',['$范围,$ HTTP,stockData',功能MyCtrl1($范围,$ HTTP,stockData){ $ scope.submit =功能(){
$ scope.info = stockData.query();
console.dir($ scope.info);
} }]);
和我想通过绑定NG-模式,在我的名为 NG-模式=symbol_wanted
以下服务视图坐在...
使用严格的; /* 服务 */ angular.module('stocks.services',['ngResource'])。工厂('stockData',['$资源',
功能($资源){
返回$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', {},{
查询:{方法:GET,IsArray的:假}
});
}]);
我如何连接控制器的范围,以获得通过到服务?谢谢!
我如何通过从范围控制器angularjs来服务?
块引用>您不能注入$范围到服务,有没有这样的东西作为一个Singleton $范围。
我想通过绑定NG-模型,坐在我认为所谓的NG-模式=symbol_wanted下面的服务...
块引用>您可以调用服务,并通过参数是这样的:
.factory('stockData',['$资源','$ Q',函数($资源,$ Q){ VAR厂= {
查询:函数(值){ //这里你可以与'价值'玩 VAR数据= $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', {},{
查询:{
方法:GET,
IsArray的:假的
}
});
变种推迟= $ q.defer();
deferred.resolve(数据);
返回deferred.promise;
} }
回厂;
}]);所以我们称这种服务,并得到一个承诺背是这样的:
stockData.query(值)//< - 通价值
。然后(功能(结果){
$ scope.data =结果;
},功能(结果){
警报(错误:没有返回数据);
});顺便说一句,我建议你使用
$ http.get
:I have the following controller:
'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); } }]);
and i want to pass a bound ng-model that sits in my view called
ng-model="symbol_wanted"
to the following service...'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} }); }]);
how do i connect the controller's scope to get passed into the service? thanks!
解决方案how do i pass scope from controller to service in angularjs?
You can't inject $scope into services, there is no such thing as a Singleton $scope.
i want to pass a bound ng-model that sits in my view called ng-model="symbol_wanted" to the following service...
You can call the service and pass parameters this way:
.factory('stockData', ['$resource', '$q', function ($resource, $q) { var factory = { query: function (value) { // here you can play with 'value' var data = $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 } }); var deferred = $q.defer(); deferred.resolve(data); return deferred.promise; } } return factory; }]);
So we call this service and get a promise back like this:
stockData.query(value) // <-- pass value .then(function (result) { $scope.data = result; }, function (result) { alert("Error: No data returned"); });
BTW, I'd suggest you use
$http.get
:Demo Fiddle
这篇关于我如何通过从范围控制器angularjs到服务?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!