angularjs在服务中调用内部函数导致undefined

时间:2015-02-14 07:24:10

标签: angularjs

我是棱角分明的新人。我有一个服务,我在服务中的另一个函数调用一个函数。但在我的控制器中显示为未定义。见下文

//my Service
myApp.service("LocationService", function() {
    var srv = {}
    srv.msg = {long:0, lat:0};

    srv.onSuccess = function() {
        this.msg.lat = 32;
    },

    srv.onError = function() {
        this.msg.long = 99;
    },

    srv.getGpsFix = function() {
        this.onSuccess();//fails in controller
    }

    return srv;
});

//my Controller
myApp.controller("MusicCtrl", ["$scope", "LocationService", function($scope, LocationService) {

//undefined
    console.log(locationService.getGpsFix());

}]);

2 个答案:

答案 0 :(得分:1)

locationService.getGpsFix()返回undefined是正确的。

如果您打算让它返回一个值,请在函数中使用return关键字。

srv.getGpsFix = function() {
    this.onSuccess();
    return 'It worked!!!';
};

答案 1 :(得分:1)

locationService.getGpsFix()undefined。在您的控制器中,您的服务以LocationService的形式提供。因此,请使用LocationService.getGpsFix()