如何在服务angularjs中创建变量

时间:2017-07-29 04:42:53

标签: angularjs

这是我的角色服务代码。

'use strict';

sampleApp.factory('CommonService', ['$http', '$q', function($http, $q){

    var REST_SERVICE_BILL_PRODUCT_URI = 'api/v1/billproducts';
    //CommonService.Products = [];

    var factory = {
        getBillProducts: getBillProducts,
    };
    return factory;

    function getBillProducts() {
        var deferred = $q.defer();
        $http.get(REST_SERVICE_BILL_PRODUCT_URI)
            .then(
                function (response) {
                    //CommonService.Products = response.data;
                    deferred.resolve(response.data);
                },
                function(errResponse){
                    console.error('Error while fetching bill products');
                    deferred.reject(errResponse);
                }
            );
        return deferred.promise;
    }
}]);

我想在其中添加一个变量并保存响应数据。像这样

 //CommonService.Products = response.data;

所以我可以直接在控制器中使用CommonService.Products并访问更新它。

但定义//CommonService.Products = [];给我错误。

如何定义服务中的变量以在控制器中使用它。

1 个答案:

答案 0 :(得分:0)

CommonService.Products = response.data;

此声明无法正常工作,因为CommonService在给定位置{/ 1}}和上下文。相反,你可以尝试这种方法:

undefined

现在,您可以在其他AngularJS组件中注入sampleApp.factory('CommonService', ['$http', '$q', function($http, $q){ // Store the reference of function's context here var self = this; // .. code truncated for brevity .then(function (response) { // Store response data into `Products` self.Products = response.data; deferred.resolve(response.data); }, function(errResponse) { // .. code truncated for brevity ,并轻松使用CommonService,如下所示:

Products