8

我有三个控制器:主要,产品,客户。控制器 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});

工具栏服务:

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

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

4

1 回答 1

30

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

于 2013-06-14T08:24:11.343 回答