0

Я не могу получить доступ к службе внутри моего метода контроллера.AngularJS - Не удается получить доступ к службе в методе контроллера

AppController.$inject = ['$scope', 'appService']; 
function AppController($scope, appService) { 
    $scope.name = "World"; 

    $scope.clicked = function() { 
     //am not able to access appService here 
     /* 
     appService.setName("john"); 
     $scope.name = getName(); 
     */ 
     $scope.name = "button clicked"; 
    } 
} 

http://plnkr.co/edit/UgHmtCbkxeyluTPJOG4T?p=info

Услуга доступна, когда контроллер получает создан, но не при нажатии() вызывается в контроллере. Пожалуйста, дайте мне знать, если я что-то упустил.

Я пытался создать директиву (что-то вроде раскрывающегося списка локали). Я хотел, чтобы директива имела свой контроллер и собственную услугу. Моя идея заключается в том, что контроллер будет обрабатывать метод languageChange(), когда пользователь изменяет раскрывающийся список и устанавливает язык в службе, чтобы я мог внедрить эту службу в любую другую часть приложения.

Вот когда у меня были проблемы доступа к Услугам внутри моего метода контроллера (LanguageChange())

Я думаю, что если я получаю основной пример правильно, я смогу приступить к моей директивы изменения языка.

ответ

1

Вы забыли добавить appService к GetName()

Используйте это:

appService.setName("john"); 
    $scope.name = appService.getName(); 

Вместо:

appService.setName("john"); 
    $scope.name = getName(); 

Running Например: http://plnkr.co/edit/Hh9g7H9PI9JhNdbAhqdT?p=preview

+0

Спасибо за быстрый ответ. Но у меня были другие случаи, когда appService не был доступен внутри метода контроллера. Можете ли вы придумать какую-либо причину? Я могу получить к ним доступ при запуске контроллера, но не при вызове метода в контроллере. Кроме того, вы можете опубликовать очень простой пример, который создает директиву, может быть кнопкой, в которой есть контроллер и служба. При нажатии кнопки я хочу вызвать метод в контроллере, который говорит об услуге. – touchydeer36

+0

Ваш образец, наслаждайтесь! http://plnkr.co/edit/PvWCEezSfEeQmK9DKaLz?p=preview –

+0

Привет @ touchydeer36, если этот или любой ответ решил ваш вопрос, пожалуйста, рассмотрите [его принятие] (http://meta.stackexchange.com/q/5234/179419), щелкнув галочку. Это указывает более широкому сообществу, что вы нашли решение и дали некоторую репутацию как самому, так и самому себе. Это не обязательно. –

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