Reputation:
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
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