2014-03-24 2 views
1

У меня есть следующее угловое обслуживание.Угловое обслуживание вводится в контроллер, но появляется как пустой объект

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) ИЛИ изменения осущ добавить методы интерфейса самой StatusService т.е.

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

Вот демо выше работы: http://plnkr.co/edit/r07kPP85oQQKtJYMYOyK?p=preview

+0

Я изменил тип сервиса на завод, но эта же проблема все еще происходит. Я всегда использовал ту же реализацию, используя сервис («aservice»), и я смог использовать эту службу для хранения данных. В основном я просто хочу, чтобы вы могли изменить шоу на «on» или «off», используя методы on() и off(). –

+0

@ user1323435 см. Рабочую демонстрационную ссылку выше – Nikita

Смежные вопросы