Why do I have a "factory undefined" error in angularjs?

Could you help me find something wrong with this code, it says that "foodFactory is not defined". I'm still learning angularjs, so there might be errors, but I'm trying to use routes + factory.

var foodApp = angular.module("foodApp", ["ngRoute"]);

        foodApp.config(function($routeProvider)
        {

            $routeProvider
                    .when('/',
                    {
                       controller: 'foodController',
                       templateUrl: '/routes/view1.html'
                    })
                    .when('/view2',
                    {
                       controller: 'foodController',
                       templateUrl: '/routes/view2.html'
                    })
                    .when('/view3',
                    {
                       controller: 'foodController2',
                       templateUrl: '/routes/view3.html'
                    })
                    .otherwise
                    ({ redirectTo: '/' });

        });

        foodApp.factory("foodFactory", function()
        {
            var foods = [
                {name: "Bread"},
                {name: "Cheese"},
                {name: "Blackberries"}
            ];

            var factory = {};

            factory.getFoods = function ()
            {
                return foods;
            };

            return factory;

        });

        var controllers = {};

        controllers.foodController = function($scope)
        {
            $scope.foods = foodFactory.getFoods();
            $scope.foods2 = foodFactory.getFoods();
        };

        controllers.foodController2 = function($scope)
        {
            $scope.foods = foodFactory.getFoods();
        };

        foodApp.controller(controllers);

view1.html, view2.html and view3.html are great, routes also work, but it just doesn't return an array of products from the factory.

+4
source share
1 answer
    controllers.foodController = function($scope,foodFactory) // you need to inject foodFactory
    {
        $scope.foods = foodFactory.getFoods();
        $scope.foods2 = foodFactory.getFoods();
    };

    controllers.foodController2 = function($scope,foodFactory) // you need to inject foodFactory
    {
        $scope.foods = foodFactory.getFoods();
    };
+6
source

All Articles