Ho tre controller: principale, prodotto, cliente. Il controller A fa parte della mia 'pagina principale'. I controllori B e C dipendono dalla posizione.Angolare: perché il mio evento è stato gestito due volte?
controller principale:
var MainController = function ($scope, $location, $rootScope, ToolbarService) {
$scope.addClicked = function() {
ToolbarService.onAddButtonClick();
};
};
app.controller({ MainController: MainController });
prodotto:
var ProductController = function ($scope) {
$scope.$on('handleAddButtonClick', function() {
alert('Add product');
});
};
app.controller({ ProductController: ProductController });
cliente:
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');
}
};
}
});
Quando la mia posizione è #/products
e viene invocato il numero addClicked
, viene visualizzato due volte l'avviso 'Aggiungi prodotto'. Qualcuno ha la più pallida idea di cosa sia?
sei sicuro di non avere due 'ng-controller =" ProductController "' nella tua pagina? Puoi pubblicare l'HTML? – sh0ber
@ sh0ber Sì, sono sicuro. Quando cerco 'ng-controller =" ProductController "' Ottengo solo un risultato .. – Martijn
Quando imposto le tue funzioni in un violino con il mio HTML, tutto funziona come previsto, quindi penso che in qualche modo stai ottenendo due istanze del controller. Forse questo succede altrove nel tuo codice, se non il tuo HTML – sh0ber