2014-03-24 28 views
1

我有以下角度服務。Angular Service被注入控制器,但它看起來像一個空的對象

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

    return statusService; 
}); 

將其注入到一個控制器,並且在它的功能調用,就像這樣:

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

    StatusService.on(); 
}) 

,但我得到了下面的錯誤。

TypeError: Object #<Object> has no method 'on' 

回答

1

您將獲得本如果您在不同的地方聲明多個具有相同名稱的服務,則會出現問題,這會讓您感到困惑並返回{}。

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

+0

我將服務類型更改爲工廠,但同樣的問題仍在發生。我一直使用相同的實現,使用服務('aservice'),並且我能夠使用該服務來存儲數據。基本上我只想用()和off()方法將節目改變爲'開'或'關'。 –

+0

@ user1323435請參閱上面的工作演示鏈接 – Nikita

相關問題