Vicheanak
Vicheanak

Reputation: 6694

How to add underscore module to MeanJS?

Ok, first I install this from bower:

bower install angular-underscore-module

Then in modules/core/clients/app/config.js, in line 7 I added the injection:

  var applicationModuleVendorDependencies = ['ngResource', 'ngAnimate', 'ngMessages', 'ui.router', 'ui.bootstrap', 'ui.utils', 'angularFileUpload', 'underscore'];

To inject it in my controller, in modules/articles/client/controllers/articles.client.controller.js I've added it like this:

angular.module('articles').controller('ArticlesController', ['$scope', '$stateParams', '$location', 'Authentication', 'Articles', '_',
  function ($scope, $stateParams, $location, Authentication, Articles, _) {

Then, I've got this error:

angular.js:13920 Error: [$injector:undef] Provider '_' must return a value from $get factory method.

Then in this article: Provider 'xx' must return a value from $get factory method in AngularJs

It says, I should insert { in front of return and Not at the next line, however, I couldn't find that return. Am I doing something wrong here? Please suggest. Thanks.

Upvotes: 0

Views: 65

Answers (2)

Vicheanak
Vicheanak

Reputation: 6694

Found it!

In your config/assets/default.js, the client.lib.js, you have to include both underscore.min.js and angular-underscore-module.js as code below:

[...]
    'public/lib/underscore/underscore-min.js',
    'public/lib/angular-underscore-module/angular-underscore-module.js',
[...]

Upvotes: 0

Mridul Kashyap
Mridul Kashyap

Reputation: 700

underscore attaches itself to window object. you don't need to include the dependency in controller. however if you still want to use '_' you could do something like this:

app = angular.module('MyApp', ['underscore']);
app.factory('_', ['$window', function($window) {
  return $window._;
});

then you can include '_' as a dependency in your controllers.

Upvotes: 1

Related Questions