【问题标题】:How to access a controller injected services within $on listener defined within the same controller in AngulaJS如何在 AngulaJS 的同一控制器中定义的 $on 侦听器中访问控制器注入服务
【发布时间】:2018-01-18 11:00:51
【问题描述】:

在 AngularJS 中;如何访问注入到同一控制器中定义的$on 侦听器中的控制器的服务?

我有一个控制器 (myCtrl),并在其中定义了一个 $on 侦听器。 但我无法在侦听器中访问myService。这是我的代码:

app.controller('myCtrl', ['$scope', 'myService', function($scope,myService) {
    $scope.$on('someEventFired', function(event, datafronEventThrower) {
        myService.callServiceMethos(datafronEventThrower);
    });
}]);

【问题讨论】:

  • 你说的是什么意思,但我无法在监听器中访问'myService'?它会抛出任何错误吗?
  • 如果myService 被正确注入,我不明白为什么当你调用它时它会失败。
  • 我收到控制台错误:未捕获的引用错误:'myService' 未定义
  • 然后告诉我们你用来定义myService的代码
  • app.factory('myService', ['$http', function($http) { var callServiceMethos = function() { return $http.get..... } return { callServiceMethos : callServiceMethos }; });

标签: javascript angularjs broadcast emit


【解决方案1】:

如果你像这样使用 $broadcast :

$rootScope.$broadcast('someEventFired', { any: {} });

然后像这样接收事件和参数:

$scope.$on('someEventFired', function(event, args) {
    var anyThing = args.any;
});

【讨论】:

  • 是的,但我的问题是我不能使用注入到监听器中的控制器的使用服务
  • 导航器日志中没有任何内容?没有错误? ,尝试在控制器中创建一个函数并从$on函数中调用它!
  • 可能是声明服务有问题,尝试在$on函数外调用服务
  • 我想是这样,但我不知道那里有什么问题
  • 您的服务是否包含在主 html 页面中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多