Call Cordova plugin in routes.js


#1

Tried to use cordova-plugin-advanced-http in my framework7 app.
I want to call cordova.plugin.http in async route, but have no idea how to call the plugin.

async: function (routeTo, routeFrom, resolve, reject) {
var router = this;
var app = router.app;
}

Here how can I call cordova object?
I have tried
this.cordova
app.cordova
but all failed.


#2

Thats probably because the Cordova plugins aren’t yet initialized and available when you load your routes. To overcome this, I’ve delayed the framework7 initialization and put my routes inside a function like this:

var f7app = new Framework7({
  init: false,
  ...
}

Then my routes.js contains something like this:

function load_routes() {
    return {
      ... regular routes object ...
    }
}

And in my deviceready callback, I load the routes and initialize Framework7:

<body onload="document.addEventListener('deviceready', my_init_callback, false);">

function my_init_callback() {
  f7app.routes = load_routes();
  f7app.init();
}

Exact code depends on your app, but I hope you get the point of delaying the route generation and Framework7 initialization by using the deviceready event.


#3

or just window.cordova