Search code examples
angularjsbackand

AngularJS : Unknown provider: BackandProvider <- Backand <- Post


I got the following error : Unknown provider: BackandProvider <- Backand <- Post Here is my code : In index.html, I have include backand.min.js :

<script src="https://cdn.backand.net/backand/dist/1.8.2/backand.min.js"></script>

I have a factory Post with a find method. Factory.js

app.factory('Post',["$http","$q","Backand", function($http, $q, Backand){
    var factory = {
        posts : false,
        find : function(options){
            var deferred = $q.defer();
            $http({
                method: 'GET',
                url: Backand.getApiUrl() + '/1/objects/' + options.name,
                params: {
                  pageSize: 20,
                  pageNumber: 1,
                  filter: options.filter || '',
                  sort: options.sort || ''
            }
        })
            .success(function(data,status){
                factory.posts = data;
                deferred.resolve(factory.posts);
            }).error(function(data,status){
                deferred.reject('Impossible de récupérer les articles'+ status);
            })
        return deferred.promise;
        },
        get : function(id){
            var deferred = $q.defer();
            var post = {};
            var posts = factory.find().then(function(posts){
                angular.forEach(posts,function(value,key){
                    if(value.id == id){
                        post = value;
                    }
                });
                deferred.resolve(post);
            }, function(msg){
                deferred.reject(msg);
            });
            return deferred.promise;
        },
        add : function(comment){
            var deferred = $q.defer();
            deferred.resolve();
            return deferred.promise;
        }
    };
    return factory;
}]);

In my controller, I call the find method of my factory. Controller.js

app.controller('PostsCtrl',["$scope","$rootScope","Post", function($scope, $rootScope,Post){
    $rootScope.loading = true;
    var options = {name:"Post",filter:"",sort:""}
    $scope.posts = Post.find(options).then(function(posts){
        $rootScope.loading = false;
        $scope.posts = posts;
    }, function(msg){
        alert(msg);
    });
}]);

The configuration is below. app.js

var app = angular.module('monApp',['ngRoute','ngResource','backand']);
app.config(["$routeProvider","BackandProvider",function($routeProvider, BackandProvider){
    $routeProvider
        .when('/',{templateUrl:'partials/home.html',controller:'PostsCtrl'})
        .when('/comments/:id', {templateUrl: 'partials/comments.html',controller:'CommentsCtrl'})
        .otherwise({redirectTo : '/'});
    BackandProvider.setAppName('APP-NAME');
    BackandProvider.setSignUpToken('TOKEN');
    BackandProvider.setAnonymousToken('ANONYMOUS-TOKEN');
}]);

Solution

  • Your code is fine.

    I create a jsbin with your code, and everything works well.

    You just have to set APP_TOKENS from backand site.