我如何通过从范围控制器angularjs到服务? [英] how do i pass scope from controller to service in angularjs?

查看:110
本文介绍了我如何通过从范围控制器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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆