簡體   English   中英

Angular Service已注入控制器,但它顯示為空對象

[英]Angular Service is injected into controller, but it appears as an empty object

我有以下角度服務。

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'

我認為您在聲明服務時正在對module.factory()實現使用module.service()調用。 可以將較早的版本更改為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

如果您在不同的地方聲明了多個具有相同名稱的服務,就會出現此問題,它會造成混亂並返回{}。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM