4

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.

1 Answer 1

6
    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();
    };
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.