iRoot не определен, второй раз запускаю приложение - PullRequest
0 голосов
/ 30 апреля 2018

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

IRoot не определен

declare var IRoot: any;

ngOnInit() {
 this._platform.ready().then(() => {
   if (typeof (IRoot) !== 'undefined' && IRoot) {
       IRoot.isRooted((data) => {
           if (data && data == 1) {
              this.isRootedORJailBreak = true
              console.log("*******This is routed device");
         } else {
             this.isRootedORJailBreak = false
            console.log("*******This is not routed device");
        }
    }, (data) => {
            this.isRootedORJailBreak = false
           console.log("*******routed device detection failed case", data);
    });
    });
} }

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Кажется, что плагин не готов, когда Cordova готов, или не выполняет регистрацию вовремя.

Вы можете попытаться обернуть свой код внутри plataform.ready() с помощью setTimeout(() => { // your code }, 500); и посмотреть, работает ли он.

Я видел вашу проблему в github и ответ, который они дали вам, но это то же самое, что вы пытались здесь.

UPDATE

Переместите код внутри блока this._platform.ready().then(() => {}) на хук ionViewDidEnter, проблема с ngOnInit заключается в том, что он может быть кэширован и будет вызываться только один раз, ionViewDidEnter будет вызываться всегда, не имеет значения, если компонент был инициализирован ранее.

Кажется, проблема была в кеше.

0 голосов
/ 01 мая 2018

Удалите круглые скобки вокруг (IRoute), так как он сначала оценит содержимое круглых скобок до typeof (IRoute).

Сказав это, IRout все равно будет неопределенным, и вам нужно будет действовать, если он не определен.

если это удаленная библиотека, инициируйте событие onload, чтобы там, где это необходимо, могло ждать ее загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...