Javascript 角度服务被注入控制器,但它显示为空对象

Javascript 角度服务被注入控制器,但它显示为空对象,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我有以下的角度服务 angular.module('myApp') .service('StatusService', function StatusService() { var statusService= { show: 'off', on: function() { this.show = 'on'; }, off: function() { this.show = '

我有以下的角度服务

angular.module('myApp')
.service('StatusService', function StatusService() {
    var statusService= {
        show: 'off',
        on: function() {
            this.show = 'on';
        },
        off: function() {
            this.show = 'off';
        }
    };

    return statusService;
});
将其注入控制器,并调用其on函数,如下所示:

angular.module('myApp')
    .controller('aController', function (StatusService) {

    StatusService.on(); 
})
但是我得到了以下错误

TypeError: Object #<Object> has no method 'on'
TypeError:对象#没有方法“on”

我认为您在声明服务时使用了
module.service()
调用和
module.factory()
实现。将前面的更改为
module.factory(StatusService)
(实际上应称为
StatusServiceFactory
),或更改impl以将接口方法添加到
StatusService
本身,即:

function StatusService(){
this.show='off';
this.on = function(){};
}
module.service('statusService', StatusService);

下面是上述工作的演示:

如果您在不同的位置声明了多个同名服务,您将遇到此问题,它会变得混乱并返回一个{}。

我将服务类型更改为工厂,但相同的问题仍然存在。我一直使用相同的实现,使用服务('aservice'),并且我能够使用服务来存储数据。基本上,我只是希望能够使用on()和off()方法将节目更改为“开”或“关”。