Angular Service注入到控制器中,但它显示为空对象

时间:2014-03-24 17:06:41

标签: javascript angularjs angularjs-scope

我有以下角度服务。

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'

2 个答案:

答案 0 :(得分:1)

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

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

以上是上述工作的演示:http://plnkr.co/edit/r07kPP85oQQKtJYMYOyK?p=preview

答案 1 :(得分:1)

如果您在不同的地方声明了多个具有相同名称的服务,您会遇到此问题,它会混淆并返回{}。