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

时间:2013-05-16 12:40:19

标签: javascript angularjs

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

控制器主:

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

app.controller({ MainController: MainController });

产物:

var ProductController = function ($scope) {

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

客户:

var CustomerController = function ($scope) {

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

toolbarService:

app.service({
    ToolbarService: function ($rootScope) {
        return {
            onAddButtonClick: function () {
                $rootScope.$broadcast('handleAddButtonClick');
            }
        };
    }
});

当我的位置为#/products且调用了main addClicked时,我会收到两次“添加产品”提醒。有没有人知道为什么会这样?

1 个答案:

答案 0 :(得分:30)

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