AngularJS - 无法使用控制器方法访问服务
问题描述:
我无法访问我的控制器方法中的服务。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())
我想,如果我得到了基本的例子吧,我就可以用我的语言变化的指令进行。
答
你忘了AppService服务添加到的getName()
使用此:
appService.setName("john");
$scope.name = appService.getName();
相反的:
appService.setName("john");
$scope.name = getName();
感谢您的快速反应。但是我有其他情况,appService在控制器方法中不可访问。你能想到任何理由吗?我可以在控制器启动时访问它们,但不能在控制器中的某个方法被调用时访问它们。另外,你可以发布一个非常基本的例子来创建一个指令,可能是一个按钮,它有一个控制器和服务。点击按钮,我想调用控制器中的一个方法,该方法与服务对话。 – touchydeer36
您的样品,享受! http://plnkr.co/edit/PvWCEezSfEeQmK9DKaLz?p=preview –
嗨@ touchydeer36如果这或任何答案已解决您的问题,请考虑[接受它](http://meta.stackexchange.com/q/5234/179419 )通过点击复选标记。这向更广泛的社区表明,您已经找到了解决方案,并为答复者和您自己提供了一些声誉。没有义务这样做。 –