当应用程序首次启动时,这是有效的,之后从会话中删除应用程序,然后启动应用程序,它说
未定义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);
});
});
} }
答案 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事件,以便在需要的地方等待加载。