Proper way to include a module in AngularJS

hannu40k picture hannu40k · Oct 1, 2013 · Viewed 18.6k times · Source

I'm learning Angular and I'm trying to include Restangular this way:

var app = angular.module('myapp',['restangular']);
app.controller('UsersController', ['$scope', function ($scope, Restangular) {
   ...

Then I'm using Restangular like this:

var data = Restangular.all('someurl');

Here I get an error: Restangular is undefined. According to the documentation, this should have been simple:

// Add Restangular as a dependency to your app
angular.module('your-app', ['restangular']);

// Inject Restangular into your controller
angular.module('your-app').controller('MainCtrl', function($scope, Restangular) {
  // ...
});

However I am unable to get it to work. What gives?

Answer

Michael Benford picture Michael Benford · Oct 1, 2013

You're using the bracket notation for your controller, but you forgot to add Restangular to the list of dependencies:

['$scope', 'Restangular', function ($scope, Restangular) {...}]

This article has more information on Angular and minification. Search for "A note on minification”.