Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Uncaught Error: [$injector:unpr] Unknown provider Ionic Framework/AngularJS

Following the local storage tutorial on the Ionic blog, I'm trying to set/get a localStorage value when my Ionic app runs but I get the error message:

Uncaught Error: [$injector:unpr] Unknown provider: $localstorageProvider <- $localstorage

My app.js code:

angular.module('starter', ['ionic', 'starter.controllers', 'starter.services'])

.run(function($ionicPlatform, $localstorage) {
  $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) {
      // org.apache.cordova.statusbar required
      StatusBar.styleDefault();
    }

    $localstorage.set('name', 'Ian');
    console.log($localstorage.get('name'));
  });
})

And services.js:

angular.module('starter.services', [])

.factory('localstorage', ['$window', function($window) {
  return {
    set: function(key, value) {
      $window.localStorage[key] = value;
    },
    get: function(key, defaultValue) {
      return $window.localStorage[key] || defaultValue;
    },
    setObject: function(key, value) {
      $window.localStorage[key] = JSON.stringify(value);
    },
    getObject: function(key) {
      return JSON.parse($window.localStorage[key] || '{}');
    }
  }
}]);

Not sure what I'm missing here.

EDIT: If I change my app.js code to the following, it works as expected:

angular.module('starter', ['ionic', 'starter.controllers', 'starter.services'])

.run(function($ionicPlatform, $localstorage) {
  $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) {
      // org.apache.cordova.statusbar required
      StatusBar.styleDefault();
    }

    window.localStorage.setItem('name', 'Ian');
    console.log(window.localStorage.getItem('name'));

  });
})
like image 404
Ian Avatar asked Jul 31 '14 13:07

Ian


1 Answers

Had the same problem with the Ionic tutorial implementation: http://learn.ionicframework.com/formulas/localstorage/

It worked when I removed the $ sign in front of localstorage.

.run(function($ionicPlatform, localstorage)
like image 145
gabberr Avatar answered Oct 27 '22 00:10

gabberr