Mam trzy kontrolery: główne, produktu, klienta. Kontroler A jest częścią mojej "masterpage". Kontrolery B i C zależą od lokalizacji.Kątowe: Dlaczego moje wydarzenie jest obsługiwane dwukrotnie?
kontroler główny:
var MainController = function ($scope, $location, $rootScope, ToolbarService) {
$scope.addClicked = function() {
ToolbarService.onAddButtonClick();
};
};
app.controller({ MainController: MainController });
produkt:
var ProductController = function ($scope) {
$scope.$on('handleAddButtonClick', function() {
alert('Add product');
});
};
app.controller({ ProductController: ProductController });
klientów:
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');
}
};
}
});
Gdy moja lokalizacja to #/products
, a wywoływana jest główna nazwa addClicked
, otrzymuję alert "Dodaj produkt" dwa razy. Czy ktoś ma pojęcie, dlaczego tak jest?
czy na twojej stronie nie masz dwóch 'ng-controller =" ProductController "'? Czy możesz opublikować kod HTML? – sh0ber
@ sh0ber Tak, jestem pewien. Kiedy szukam 'ng-controller =" ProductController "' Otrzymuję tylko jeden wynik .. – Martijn
Kiedy ustawiam twoje funkcje w skrzypcach z moim HTML, wszystko działa zgodnie z oczekiwaniami, więc myślę, że jakoś dostajesz dwa wystąpienia kontroler. Może to zdarza się gdzie indziej w twoim kodzie, jeśli nie twój HTML – sh0ber