2017-08-06 1 views
0

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?

Répondre

0

Pour quelqu'un d'autre qui pourrait bénéficier ... J'étais stupide.

this.$element.on("click",() => $q(() => this.popup())); 
+0

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

+0

C'est bizarre - ça marche quand même? – Jim

+0

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