user1650917
user1650917

Reputation:

Why do I get 'factory is not defined' error in angularjs?

could you help me find what's wrong with this code, it says "foodFactory is not defined". I'm still learning angularjs so there may 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 fine, routes are working too but it just doesn't return foods array from factory.

Upvotes: 4

Views: 6087

Answers (1)

Kalhan.Toress
Kalhan.Toress

Reputation: 21901

    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();
    };

Upvotes: 6

Related Questions