Adding states from a json


#1

Hi there,
I’m trying to get the states for my stateProvider from a json file. I found something similar for Angular-Apps at stackoverflow (http://stackoverflow.com/questions/15780269/dynamic-routing-in-angularjs-can-i-retrieve-data-from-server-before-setting-up)
So i tried to adapt this to my ionic app. but somehow the states can not be reached.


var $stateProviderReference;
var $routerProviderReference;
var database = null;
var universaldiag2 = angular.module('starter', ['ionic', 'ngCordova'])

universaldiag2.config(['$stateProvider', '$urlRouterProvider',function($stateProvider, $urlRouterProvider) {
    $stateProviderReference=$stateProvider;
    $routerProviderReference=$urlRouterProvider;
}]);

universaldiag2.run(function($ionicPlatform, $cordovaSQLite, $http, $state) {

    $http.get('../js/routes.json').success(function(data){
        console.log("routes.json has been found");
        angular.forEach(data, function(route){
           console.log(route.id+" "+route.url+" "+route.template);
            $stateProviderReference.state( route.id, {url: route.url, template: route.template});
            console.log($state.is(route.id));
            });
        $routerProviderReference.otherwise('home');
        $state.reload();
    });
                                                
    $ionicPlatform.ready(function() {
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
    // for form inputs)
    if(window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
    }
    if(window.StatusBar) {
      StatusBar.styleDefault();
    }    
    //open database and create tables if they don't exist
    database= $cordovaSQLite.openDB({ name: "diag.db"});
    $cordovaSQLite.execute(database,"CREATE TABLE IF NOT EXISTS device (deviceId integer primary key, name text, manufacturer text, yob integer, serial text)");
    console.log("database succesfully created");
  }); 
});

The json-file looks like



[   
{
    "id":"home",
    "url":"/home",
    "template":"comp/home.html"
},
{
     "id":"idMan",
    "url":"/idMan",
    "template":"comp/idMan.html"
},
{
    "id":"chooseDiag",
    "url": "/chooseDiag",
    "template": "comp/chooseDiag.html"
}
]

The errormessage reads as following:

 Error: Cannot transition to abstract state '[object Object]' 

Has anyone an idea why this does not work?

cheers martin