web-dev-qa-db-fra.com

Diffusion AngularJS $ avec plusieurs paramètres

Je me demandais si je pouvais avoir un $ broadcast $ avec plusieurs paramètres comme:

$scope.$broadcast('event',$scope.item, $scope.item);

Est-il possible d'avoir quelque chose comme ça ou quelque chose de similaire dans tous les cas?

Merci d'avance!

18
blaa

Mettez simplement les paramètres dans un objet:

$scope.$broadcast('event', { a: item1, b: item2 })

Ensuite, accédez-y du deuxième argument au rappel:

$scope.$on('event', function(event, opt) {
 // access opt.a, opt.b
});

Ou si vous utilisez la syntaxe ES2015, vous pouvez décompresser les arguments:

$scope.$on('event', (event, {a,b}) => {
 // access them just as a, b
});
42
Duncan

La documentation dit:

'Un ou plusieurs arguments facultatifs qui seront transmis aux écouteurs d'événement'

$rootScope.$emit(event_name, p1, p2, p3);
2
user1920925