我有三個控制器:主,產品,客戶。控制器A是我的'masterpage'的一部分。控制器B和C與位置有關。Angular:爲什麼我的事件處理了兩次?
控制器主:
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
被調用時,我收到兩次警報'添加產品'。有人知道這是爲什麼嗎?
你確定你的頁面中沒有兩個'ng-controller =「ProductController」?你可以發佈HTML嗎? – sh0ber
@ sh0ber是的,我確定。當我搜索'ng-controller =「ProductController」'我只得到一個結果.. – Martijn
當我使用HTML設置你的函數時,一切都按預期工作,所以我認爲你得到了兩個控制器。也許這發生在你的代碼的其他地方,如果不是你的HTML – sh0ber