iRoo​​t未定义,第二次启动应用程序

时间:2018-04-30 10:50:57

标签: angular cordova ionic-framework

当应用程序首次启动时,这是有效的,之后从会话中删除应用程序,然后启动应用程序,它说

  

未定义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 :(得分:1)

当cordova准备好或者没有及时进行注册时,插件似乎还没有准备就绪。

您可以尝试使用"<h1 id="test">test</h1><p>desc of test</p>"将代码整理到plataform.ready()内,看看是否有效。

我在github中看到了你的问题以及他们给你的回复,但这与你在这里尝试过的一样。

<强>更新

setTimeout(() => { // your code }, 500);块内的代码移动到this._platform.ready().then(() => {})钩子,ionViewDidEnter的问题是它可以被缓存,只会被调用一次,{{将始终调用1}},如果组件之前已初始化则无关紧要。

问题似乎是缓存问题。

答案 1 :(得分:-3)

删除(IRoute)周围的括号,因为它将首先评估typeof (IRoute)之前的括号内容。

话虽如此,IRout仍然未定义,如果没有定义,你需要采取行动。

如果是远程库,则触发onload事件,以便在需要的地方等待加载。