相关疑难解决方法(0)

AngularJs广播重复执行次数太多次

在我的一个Angular控制器中,我有这个:

// controller A
$rootScope.$on("myEventFire", function(event, reload) {
    someAction();
});
Run Code Online (Sandbox Code Playgroud)

在另一个控制器中我有这个:

// controller B
$scope.openList = function(page) {
    $rootScope.$broadcast('myEventFire', 1);
}
Run Code Online (Sandbox Code Playgroud)

现在,这是一个单页应用程序.当我最初转到控制器A并尝试触发此事件时,someAction()将被执行一次.如果我离开并再次回到控制器A并做同样的事情,someAction()会被执行两次.如果我再做一次,它会发生三次,依此类推.我在这做错了什么?

angularjs angularjs-scope

51
推荐指数
3
解决办法
3万
查看次数

为什么我不能将$ scope注入Angular的工厂?

我有一个需要收听广播事件的工厂.我注入$scope了工厂,所以我可以使用$scope.$on.但是一旦我添加$scope到参数列表中,我就会得到一个喷油器错误.

这很好用:

angular.module('MyWebApp.services')
    .factory('ValidationMatrixFactory', ['$rootScope', function($rootScope) {
        var ValidationMatrixFactory = {};
        return ValidationMatrixFactory;
    }]);
Run Code Online (Sandbox Code Playgroud)

这会引发进样器错误:

angular.module('MyWebApp.services')
    .factory('ValidationMatrixFactory', ['$scope', '$rootScope', function($scope, $rootScope) {
        var ValidationMatrixFactory = {};
        return ValidationMatrixFactory;
    }]);
Run Code Online (Sandbox Code Playgroud)

为什么我不能注入$scope工厂?如果我不能,除了使用之外,我有没有办法听取其他事件$rootScope

dependency-injection angularjs

4
推荐指数
1
解决办法
4979
查看次数