首页 > 解决方案 > 回调内部的属性

问题描述

在回调requestPermission内部我没有访问权限this。如何在我的课堂上调用方法 InstanciarZona()?

class PublisherPush{ ...

InstanciarZona(){
    let data              = {};
    data.zona             = this.Ad.GetZona()
    data.dominio          = this.Ad.GetDominio();
    this.Ad.StartSockect();
    socket.emit("conectado",data);        
    socket.on("Instanciar Zona",function(data){
         if(debug == true) console.log('7- Zona de Push instanciada...','Carregando campanha...');
         data.navigator      = navigator.platform;
         data.browser        = BrowserDetect.browser;
         data.os             = BrowserDetect.OS;
         socket.emit('Carregar Campanhas',data);
    });
 }   

 requestNotificationPermission(){
    const permission = window.Notification.requestPermission(function(permission){ 
    var notification = new Notification("Hi there!");
    console.log('permission',permission,window);
    switch(permission){
        case 'granted':
            this.InstanciarZona();  
        break;
        default: 
            console.log('okay você não concedeu permissão');
     }
     return permission;   
   });
 }

 ....

// 权限的值可以是 'granted'、'default'、'denied'

// 授予:用户已接受请求

// 默认值:用户通过单击 x 关闭了通知权限弹出窗口

// 拒绝:用户拒绝了请求。

标签: javascript

解决方案


有两种主要方法可以做到这一点:

  1. 在回调之前添加const that = this;,然后使用that而不是this在回调内部。
  2. 不要使用function回调关键字,而是使用箭头函数,它没有自己的this.

推荐阅读