Angularjs:为angular.module添加服务

时间:2014-08-26 08:39:29

标签: angularjs

我想在angular.module中使用服务。

record.js我有一个RecordCtrl,我希望使用requestCurrentUser中存在的sessionService.js功能。我使用Session来获取控制器和服务之间的传递数据。我通过record,js函数从requestCurrentUser发送请求,如下所示:

'use strict';
var app = angular.module('app');
app.controller('RecordCtrl',['$scope','Session','Records',function($scope, Session, Records){
    $scope.user = Session.requestCurrentUser();
}]);

我在sessionService.js中收到此信息,如下所示:

  'use strict';
   angular.module('sessionService', [])
    .factory('Session', function($location, $http, $q) {
        var service = {

            requestCurrentUser: function() {
                    return $http.get('/api/users').then(function(response) {
                        service.currentUser = response.data.user;
                        return service.currentUser;
                    );
                }
            },
            currentUser: null,
        return service;
    });

我可以在requestCurrentUser中正确获取数据,但我无法在record.js中收到此数据。当我在sessionService.js中回显数据时,我可以看到以下数据:

Object {id: 2, email: "mgh@mgh.com", created_at: "2014-08-11T08:37:59.981Z", updated_at: "2014-08-26T08:03:27.702Z"} 

但是我无法在record.js中收到这些数据,我得到一个如下所示的空对象:

[object Object] 

我认为我在2 Session文件(jsrecord.js)中使用的代码问题大约为sessionService.js。对于添加依赖项,我有app.js包含对此的依赖性。

app.js

'use strict';
angular.module('app',['ngRoute', 'ngResource', 'sessionService', 'recordService'])

我找不到问题,我通过以下代码将sessionService.js添加到record.js

app.service('sessionService');

但问题不在于解决。我不知道如何解决这个问题?任何人都有解决这个问题的想法吗?

1 个答案:

答案 0 :(得分:2)

可以修改如下:

'use strict';
var app = angular.module('app');
app.controller('RecordCtrl',['$scope','Session','Records',function($scope, Session, Records){
    Session.requestCurrentUser().then(function(data) {
        $scope.user = data;
    });

}]);