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(); 

運行例如: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 )通過點擊複選標記。這向更廣泛的社區表明,您已經找到了解決方案,併爲答覆者和您自己提供了一些聲譽。沒有義務這樣做。 –

相關問題