angular js unknown provider

I'm trying to "customize" the mongolab example to fit my own REST API. Now I'm running into this error and I am not sure what I am doing wrong:

Error: Unknown provider: ProductProvider <- Product
    at Error (unknown source)
    at http://localhost:3000/js/vendor/angular.min.js:28:395
    at Object.c [as get] (http://localhost:3000/js/vendor/angular.min.js:26:180)
    at http://localhost:3000/js/vendor/angular.min.js:28:476
    at c (http://localhost:3000/js/vendor/angular.min.js:26:180)
    at d (http://localhost:3000/js/vendor/angular.min.js:26:314)

This is my controller:

function ProductListCtrl($scope, Product) {
  $scope.products = Product.query();
}

and this is the module:

angular.module('productServices', ['ngResource']).
    factory('Product', ['$resource', function($resource){
      var Product = $resource('/api/products/:id', {  }, {
        update: { method: 'PUT' }
      });

      return Product;
    }]);

Your code looks good, in fact it works (apart from the calls themselves) when copied & pasted into a sample jsFiddle: http://jsfiddle.net/VGaWD/

Hard to say what is going on without seeing a more complete example but I hope that the above jsFiddle will be helpful. What I'm suspecting is that you are not initializing your app with the 'productServices' module . It would give the same error, we can see this in another jsFiddle: http://jsfiddle.net/a69nX/1/

If you are planning to work with AngularJS and MongoLab I would suggest using an existing adapter for the $resource and MongoLab : https://github.com/pkozlowski-opensource/angularjs-mongolab It eases much of the pain working with MongoLab, you can see it in action here: http://jsfiddle.net/pkozlowski_opensource/DP4Rh/ Disclaimer! I'm maintaining this adapter (written based on AngularJS examples) so I'm obviously biased here.


I got that error because I was passing an incorrect parameter to the factory definition. I had:

myModule.factory('myService', function($scope, $http)...

It worked when I removed the $scope and changed the factory definition to:

myModule.factory('myService', function( $http)...

In case you need to inject $scope , use:

myModule.factory('myService', function($rootScope, $http)...

I just had a similar problem. The error said the same the in the question, tried to solve it with the answer of pkozlowski.opensource and Ben G, which both are correct and good answers.

My problem was indeed different with the same error:

in my HTML-Code I had the initialisation like this...

<html ng-app>

A bit further down I tried to do something like this:

<div id="cartView" ng-app="myApp" ng-controller="CartCtrl">

I got rid of the first one... then it worked... obviously you can't initialise ng-app twice or more times. fair enough.

I totaly forgot about the first "ng-app" and got totaly frustrated. Maybe this is gonna help someone oneday...

链接地址: http://www.djcxy.com/p/2178.html

上一篇: 依赖注入vs工厂模式

下一篇: 角js未知提供商