J'essaye de faire fonctionner cette fonction sur la fonction $ onInit dans angularJS.répondre à l'événement jquery dans un résumé angulaire dans un composant angulaire
popup() {
this.$log.log("popup clicked...");
}
constructor(
public $log: ILogService,
public $timeout: ITimeoutService,
public $q: IQService,
public $element: any) {
// i have tried this
$element.on("click custom:event", $q.when(() => this.popup()));
// and this.
$element.on("click custom:event", $timeout(() => this.popup(), 1000));
// I have also tried the scope (last resort)
$element.on("click custom:event", $scope.apply(() => this.popup());
}
Dans chaque cas, l'erreur est:
Uncaught TypeError: ((jQuery.event.special[handleObj.origType] || (intermediate value)).handle || handleObj.handler).apply is not a function at HTMLElement.dispatch at HTMLElement.elemData.handle
Y at-il un moyen de créer correctement une promesse telle que l'événement jQuery est déclenché dans le digest angulaire?
Le choix de $ q est aléatoire ici. Cela crée une promesse qui ne sera jamais utilisée. Cela devrait plutôt être $ scope.apply. – estus
C'est bizarre - ça marche quand même? – Jim
Cela fonctionne car $ q crée un condensé, mais l'utilisation de $ q est fausse ici. Il y a une faute de frappe. C'est $ scope. $ Apply, pas $ scope.apply. – estus