这是我的角色服务代码。
'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 = [];给我错误。
如何定义服务中的变量以在控制器中使用它。
答案 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