Angular:为什么我的事件被处理了两次?

Mar*_*ijn 8 javascript angularjs

我有三个控制器:主,产品,客户.控制器A是我"主页"的一部分.控制器B和C取决于位置.

控制器主要:

var MainController = function ($scope, $location, $rootScope, ToolbarService) {
    $scope.addClicked = function () {
        ToolbarService.onAddButtonClick();
    };
};

app.controller({ MainController: MainController });
Run Code Online (Sandbox Code Playgroud)

产品:

var ProductController = function ($scope) {

    $scope.$on('handleAddButtonClick', function () {
        alert('Add product');
    });
};
app.controller({ ProductController: ProductController });
Run Code Online (Sandbox Code Playgroud)

顾客:

var CustomerController = function ($scope) {

    $scope.$on('handleAddButtonClick', function () {
        alert('Add customer');
    });
};
app.controller({ CustomerController: CustomerController});
Run Code Online (Sandbox Code Playgroud)

toolbarService:

app.service({
    ToolbarService: function ($rootScope) {
        return {
            onAddButtonClick: function () {
                $rootScope.$broadcast('handleAddButtonClick');
            }
        };
    }
});
Run Code Online (Sandbox Code Playgroud)

当我的位置是#/products并且addClicked调用了main时,我会收到两次"添加产品"警报.有没有人知道为什么会这样?

Mar*_*ijn 30

问题是我还在路线中声明了一个控制器.所以我在html页面上配置了一个控制器,在路由提供者中配置了一个控制器.这导致一切都执行了两次..