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 )通过点击复选标记。这向更广泛的社区表明,您已经找到了解决方案,并为答复者和您自己提供了一些声誉。没有义务这样做。 –

相关问题