Ionic — JavaScript: доступ к свойствам внутри функции

#javascript #ionic-framework

#javascript #ionic-framework

Вопрос:

это может быть глупый вопрос, но я новичок, поэтому, пожалуйста, помогите мне в этом

я хочу получить доступ к общедоступному свойству и изменить его значение внутри функции setTimeout, ниже приведен мой код.

 export class AppComponent implements OnInit {
  public selectedIndex = 0;
  public appPages = [
    
    {
      title: 'Trash',
      url: '/folder/Trash',
      icon: 'trash'
    },
    {
      title: 'Spam',
      url: '/folder/Spam',
      icon: 'warning'
    }
  ];
  public showSplash = true;
  constructor(
    private platform: Platform,
    private splashScreen: SplashScreen,
    private statusBar: StatusBar,

) {
    this.initializeApp();

  }

  initializeApp() {
    this.platform.ready().then(() => {
      this.statusBar.styleDefault();
      this.splashScreen.hide();
      setTimeout(function() {
        //showSplash = false ;
        console.log('set timeout worked');
       }, 300);


    });
  }
  

консоль.журнал работает внутри setTimeout мне нужно изменить значение showSplash в этом блоке, пожалуйста, помогите, как я могу это сделать

Ответ №1:

Я думаю, что это угловой и машинописный код. Вы можете использовать функцию со стрелкой.

https://developer.mozilla.org/tr/docs/Web/JavaScript/Reference/Functions/Arrow_functions

 initializeApp() {
  this.platform.ready().then(() => {
    this.statusBar.styleDefault();
    this.splashScreen.hide();
    setTimeout(() => {
      this.showSplash = false;
      console.log('set timeout worked');
    }, 300);
  });
}
  

Комментарии:

1. работал отлично, не могли бы вы объяснить, почему это не сработало, я имею в виду, что для ссылки на «это» внутри функции в angular — TS нам нужно использовать функции со стрелками? пожалуйста, подтвердите

2. Таким образом, при использовании this в function синтаксисе он ссылается на объект Window . Когда используется функция arrow , если вы проверяете выходные данные javascript, она создает определение, подобное var _this = this; в коде, и фактически использует эту переменную _this вместо this setTimeout функции.@ SikanderNawaz